前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【蓝桥杯Java_C组·从零开始卷】第二节(附)、if与switch效率比较(千万次/一亿次)

【蓝桥杯Java_C组·从零开始卷】第二节(附)、if与switch效率比较(千万次/一亿次)

作者头像
红目香薰
发布2022-11-29 17:53:40
1600
发布2022-11-29 17:53:40
举报
文章被收录于专栏:CSDNToQQCode

前言:

分支数 小于三时,else if 效率更高 等于三时,效率近乎相同 大于三时,switch case效率更高

if与switch小于三次对比:

代码语言:javascript
复制
package Action;

public class HelloWorld {
	static int count=10000000;
	public static void main(String[] args) {
		if_test();
		System.gc();//清理一下
		switch_test();
	}
	public static void if_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			if(i==(10000000-1)) {
				System.out.println("if判断一千万次");
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("if判断一千万次"+(end-start)+"毫秒");
	}
	public static void switch_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			switch(i) {
				case 10000000-1:System.out.println("switch判断一千万次");break;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("switch判断一千万次"+(end-start)+"毫秒");
	}
}

区别还算明显吧,量少,可以用一亿试试。

代码语言:javascript
复制
package Action;

public class HelloWorld {
	static int count=100000000;
	public static void main(String[] args) {
		if_test();
		System.gc();//清理一下
		switch_test();
	}
	public static void if_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			if(i==(100000000-1)) {
				System.out.println("if判断一亿次");
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("if判断一亿次"+(end-start)+"毫秒");
	}
	public static void switch_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			switch(i) {
				case 100000000-1:System.out.println("switch判断一亿次");break;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("switch判断一亿次"+(end-start)+"毫秒");
	}
}

 这就很明显了。

if与switch等于三次对比:

代码语言:javascript
复制
package Action;

public class HelloWorld {
	static int count=10000000;
	public static void main(String[] args) {
		switch_test();
		if_test();
	}
	public static void if_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			if(i==(10000000-1)) {
				System.out.println("if判断一千万次");
			}else if(i==-1) {
				
			}else if(i==-2){
				
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("if判断一千万次"+(end-start)+"毫秒");
	}
	public static void switch_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			switch(i) {
				case 10000000-1:System.out.println("switch判断一千万次");break;
				case -1:break;
				case -2:break;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("switch判断一千万次"+(end-start)+"毫秒");
	}
}

三个的时候其实还是if快一些。

if与switch大于三次对比:

代码语言:javascript
复制
package Action;

public class HelloWorld {
	static int count=10000000;
	public static void main(String[] args) {
		if_test();
		System.gc();
		switch_test();
	}
	public static void if_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			if(i==(10000000-1)) {
				System.out.println("if判断一千万次");
			}else if(i==-1) {
				
			}else if(i==-2){
				
			}else if(i==-3){
				
			}else if(i==-4){
				
			}else if(i==-5){
				
			}else if(i==-6){
				
			}else if(i==-7){
				
			}else if(i==-8){
				
			}else if(i==-9){
				
			}else if(i==-10){
				
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("if判断一千万次"+(end-start)+"毫秒");
	}
	public static void switch_test() {
		long start = System.currentTimeMillis();
		for (int i = 0; i <count; i++) {
			switch(i) {
				case 10000000-1:System.out.println("switch判断一千万次");break;
				case -1:break;
				case -2:break;
				case -3:break;
				case -4:break;
				case -5:break;
				case -6:break;
				case -7:break;
				case -8:break;
				case -9:break;
				case -10:break;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("switch判断一千万次"+(end-start)+"毫秒");
	}
}

这回效果还是比较明显的,用一亿再试试:

这就更明显了。

希望能对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
    • if与switch小于三次对比:
      • if与switch等于三次对比:
        • if与switch大于三次对比:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档