JavaAwtSwing笔记之 Label和JLabel性能对比, JLabel竟比Label快好多

性能对比 , JLabel竟然比Label快好多

加载9980个Label 用时 22079 毫秒

package labelJLabel;

import java.awt.*;
import java.awt.event.*;

public class 加载多个Label的用时 {
	
	public static void main(String...arguments) {
		long beginning = System.currentTimeMillis();
		Frame frame = new Frame("加载一万个Label的用时");
		frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
		frame.setBounds(100,50,1600,800);
		frame.setLayout(new FlowLayout());
		for(int c=0;c<9980;c++) {  // Win10下 9988 会报 Exception in thread "main" java.lang.InternalError: 当前程序已使用了 Window 管理器对象的系统允许的所有句柄。
			Label lb = new Label("Label-"+c); lb.setBackground(Color.PINK);
			frame.add(lb);
		}
		frame.setVisible(true);
		long cost = System.currentTimeMillis()-beginning;
		System.out.println("用时 "+cost+" 毫秒");
	}

}

在这里插入图片描述

加载9980个JLabel 才用时 695 毫秒

package labelJLabel;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JLabel;

public class 加载多个JLabel的用时 {
	
	public static void main(String...arguments) {
		long beginning = System.currentTimeMillis();
		Frame frame = new Frame("加载一万个JLabel的用时");
		frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
		frame.setBounds(100,50,1600,800);
		frame.setLayout(new FlowLayout());
		for(int c=0;c<9980;c++) {  // Win10下 9988个Label 会报 Exception in thread "main" java.lang.InternalError: 当前程序已使用了 Window 管理器对象的系统允许的所有句柄。
			JLabel lb = new JLabel("JLabel-"+c); lb.setBackground(Color.PINK); lb.setOpaque(true);
			frame.add(lb);
		}
		frame.setVisible(true);
		long cost = System.currentTimeMillis()-beginning;
		System.out.println("用时 "+cost+" 毫秒");
	}

}

在这里插入图片描述

加载 5万个JLabel 用时 19394 毫秒 比9000个Label还快, 没有windows句柄限制

package labelJLabel;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JLabel;

public class 加载多个JLabel的用时 {
	
	public static void main(String...arguments) {
		long beginning = System.currentTimeMillis();
		Frame frame = new Frame("加载一万个JLabel的用时");
		frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
		frame.setBounds(100,50,1600,800);
		frame.setLayout(new FlowLayout());
		for(int c=0;c<50000;c++) {  // Win10下 9988个Label 会报 Exception in thread "main" java.lang.InternalError: 当前程序已使用了 Window 管理器对象的系统允许的所有句柄。
			JLabel lb = new JLabel("JLabel-"+c); lb.setBackground(Color.PINK); lb.setOpaque(true);
			frame.add(lb);
		}
		frame.setVisible(true);
		long cost = System.currentTimeMillis()-beginning;
		System.out.println("用时 "+cost+" 毫秒");
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值