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

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

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

    Swing


    天行健 君子以自強不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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

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

    最近遇到一個很奇怪的問題,寫了一個界面程序,剛開始沒有 設置字體,效率還可以,但是默認字體看著比較難看,就改用了一個字體,誰知道在jdk1.4批量測試過程中,效率居然比原來要低非常非常的多。
    后來發現如果是jdk1.5及以上版本兩者效率幾乎一樣,見附件截圖。
    而且就Swing效率和增強功能來講,JDK1.6u10及以上版本有非常大的提高,
    所以如果條件運行,還是建議都改成JDK1.6u10及以上版本

    測試代碼如下:


    public class FontDemo extends JPanel {

        
    public static void main(String[] args) {
            JFrame f 
    = new JFrame();
            f.setTitle(
    "TWaver中文社區");
            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測試結果


    1.6測試結果



    原帖地址

    主站蜘蛛池模板: 国产一级淫片a免费播放口| 成人毛片免费观看| 亚洲不卡视频在线观看| 免费看片A级毛片免费看| 中文字幕av无码不卡免费 | 亚洲成年人在线观看| 黄页网站免费观看| 一级视频免费观看| 亚洲成人免费网站| 亚洲av无码成人精品区在线播放| 国产精品免费AV片在线观看| 91丁香亚洲综合社区| 亚洲人成伊人成综合网久久久| 无码中文字幕av免费放| 国产成人1024精品免费| 亚洲色精品三区二区一区| 亚洲一区AV无码少妇电影☆| AV免费网址在线观看| 久章草在线精品视频免费观看| 亚洲av无码一区二区三区在线播放| 亚洲AV综合色区无码另类小说| 成人午夜免费福利| 一区二区三区在线免费看| 牛牛在线精品观看免费正| 亚洲欧洲日产专区| 久久精品国产69国产精品亚洲| 日韩视频免费在线| 在线看免费观看AV深夜影院| 成人A毛片免费观看网站| 亚洲.国产.欧美一区二区三区| 亚洲高清视频在线播放| 亚洲精品美女久久777777| 又爽又高潮的BB视频免费看| 两个人的视频高清在线观看免费 | 成人免费视频77777| 在线人成免费视频69国产| 一级毛片a免费播放王色电影| 亚洲丁香婷婷综合久久| 亚洲毛片基地4455ww| 亚洲福利视频网址| 亚洲伦另类中文字幕|