<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Swing


    天行健 君子以自強(qiáng)不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    nativeFont和logicalFont在JDK1.4下的重大效率差異

    Posted on 2010-08-02 21:32 zht 閱讀(399) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE

    最近遇到一個(gè)很奇怪的問(wèn)題,寫(xiě)了一個(gè)界面程序,剛開(kāi)始沒(méi)有 設(shè)置字體,效率還可以,但是默認(rèn)字體看著比較難看,就改用了一個(gè)字體,誰(shuí)知道在jdk1.4批量測(cè)試過(guò)程中,效率居然比原來(lái)要低非常非常的多。
    后來(lái)發(fā)現(xiàn)如果是jdk1.5及以上版本兩者效率幾乎一樣,見(jiàn)附件截圖。
    而且就Swing效率和增強(qiáng)功能來(lái)講,JDK1.6u10及以上版本有非常大的提高,
    所以如果條件運(yùn)行,還是建議都改成JDK1.6u10及以上版本

    測(cè)試代碼如下:


    public class FontDemo extends JPanel {

        
    public static void main(String[] args) {
            JFrame f 
    = new JFrame();
            f.setTitle(
    "TWaver中文社區(qū)");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setContentPane(
    new FontDemo());
            f.setSize(
    800600);
            f.setLocationRelativeTo(
    null);
            f.setVisible(
    true);
        }


        
    private TDataBox box = new TDataBox();
        
    private BarChart chart = new BarChart(box);

        
    private static final int times = 1000;
        
    private static final int style = Font.BOLD;
        
    private static final int size = 16;

        
    public FontDemo() {
            initBox();
            initChart();
            initGUI();
        }


        
    private void initGUI() {
            
    this.setLayout(new BorderLayout());

            JScrollPane pane 
    = new JScrollPane(chart.getLegendPane());

            
    this.add(chart, BorderLayout.CENTER);
            
    this.add(pane, BorderLayout.EAST);
        }


        
    private void initBox() {
            
    final List localFonts = new ArrayList();
            List nativeFonts 
    = new ArrayList();

            
    // get all available fontFamily names
            Font[] fonts = SunGraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
            
    for (int i = 0; i < fonts.length; i++{
                
    // separate logical and native font
                if (SunGraphicsEnvironment.isLogicalFont(fonts[i])) {
                    localFonts.add(fonts[i]);
                }

                
    else {
                    nativeFonts.add(fonts[i]);
                }

            }


            System.out.println(
    "///////////// localFonts test /////////////");
            
    for (int i = 0; i < localFonts.size(); i++{
                Font font 
    = (Font) localFonts.get(i);
                
    long start = System.currentTimeMillis();
                
    for (int k = 0; k < times; k++{
                    createFont(font);
                }

                
    long spendTime = System.currentTimeMillis() - start;
                Node n 
    = new Node();
                n.setName(font.getName());
                n.putChartValue(spendTime);
                n.putChartColor(Color.GREEN);
                box.addElement(n);
                
    //            System.out.println(">" + spendTime + "\t" + font.getName());
            }

            System.out.println(
    "\n///////////// nativeFonts test /////////////");
            
    for (int i = 0; i < nativeFonts.size(); i++{
                Font font 
    = (Font) nativeFonts.get(i);
                
    long start = System.currentTimeMillis();
                
    for (int k = 0; k < times; k++{
                    createFont(font);
                }

                
    long spendTime = System.currentTimeMillis() - start;
                Node n 
    = new Node();
                n.setName(font.getName());
                n.putChartValue(spendTime);
                n.putChartColor(Color.RED);
                box.addElement(n);
                
    //            System.out.println(">" + spendTime + "\t" + font.getName());
            }

            System.out.println(
    "\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
        }


        
    private void createFont(Font font) {
            
    //     font.deriveFont(style, size);
            new Font(font.getName(), style, size);
        }


        
    private void initChart() {
            chart.setLegendLayout(TWaverConst.LEGEND_LAYOUT_VERTICAL);
            chart.setLegendOrientation(TWaverConst.LABEL_ORIENTATION_HORIZONTAL);
            chart.setYScaleTextVisible(
    true);
            chart.setShadowOffset(
    1);
        }

    }



    1.4測(cè)試結(jié)果


    1.6測(cè)試結(jié)果



    原帖地址

    主站蜘蛛池模板: 久久国产亚洲电影天堂| 日韩一级视频免费观看| 亚洲AV综合色区无码一区 | 在线观看免费毛片| 亚洲午夜电影在线观看高清| 在线免费中文字幕| 亚洲国产精品综合一区在线 | 在线免费观看中文字幕| 亚洲人成网站在线在线观看| 久久精品a一国产成人免费网站| 国产美女被遭强高潮免费网站| 亚洲日韩国产欧美一区二区三区| 成人人免费夜夜视频观看| 亚洲国产成人无码AV在线| 国产成人无码a区在线观看视频免费| 国产亚洲男人的天堂在线观看| 亚洲成?v人片天堂网无码| 一区二区三区免费视频网站| 国产精品亚洲美女久久久| 两个人看www免费视频| 成年女人看片免费视频播放器| 亚洲国产精品无码久久98| 亚洲国模精品一区| 日本免费中文字幕| 亚洲一区二区三区免费在线观看 | 国产成人免费片在线观看 | 1000部禁片黄的免费看| 亚洲六月丁香婷婷综合| 免费看国产精品麻豆| 国产啪精品视频网站免费尤物| 亚洲人成黄网在线观看| 亚洲成AV人在线观看网址| 一个人免费日韩不卡视频| 亚洲国产欧美国产综合一区| 亚洲乱码国产乱码精品精| 无人在线观看免费高清视频| 特级aa**毛片免费观看| 亚洲美女aⅴ久久久91| 全部免费国产潢色一级| 日本一卡精品视频免费| 国产精品亚洲精品爽爽|