<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測試結果



    原帖地址

    主站蜘蛛池模板: 亚洲一区在线免费观看| 久久免费精品一区二区| 成年在线网站免费观看无广告 | 亚洲狠狠成人综合网| 国产2021精品视频免费播放| 激情内射亚洲一区二区三区| 日韩电影免费在线观看中文字幕| 无码专区—VA亚洲V天堂| 七色永久性tv网站免费看| 亚洲AV无码一区二区乱孑伦AS| 成全视频高清免费观看电视剧| 亚洲高清国产AV拍精品青青草原| 光棍天堂免费手机观看在线观看| 亚洲成AV人片在线观看ww| 欧洲人免费视频网站在线| 亚洲性69影院在线观看| 国产精品免费观看久久| 亚洲丶国产丶欧美一区二区三区| 国产成人免费片在线观看| 免费人妻精品一区二区三区| 奇米影视亚洲春色| 中文无码成人免费视频在线观看| 亚洲情a成黄在线观看动漫尤物| 亚洲精品免费在线视频| 亚洲欧美日韩国产精品一区| 伊人久久亚洲综合影院| 国产午夜精品免费一区二区三区| 亚洲人成777在线播放| 在线免费观看国产视频| 和老外3p爽粗大免费视频| 67pao强力打造67194在线午夜亚洲| 国产人成免费视频网站| 在线观看亚洲电影| 亚洲精品乱码久久久久久中文字幕| 999久久久免费精品播放| 亚洲av日韩aⅴ无码色老头| 亚洲一区二区三区无码中文字幕| 最近最新高清免费中文字幕| 亚洲av永久无码精品秋霞电影秋 | 久久精品国产亚洲AV麻豆不卡| 日本免费xxxx|