`
annan211
  • 浏览: 463069 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 高性能运算--switch 替代方案

 
阅读更多

  Java 原生的语法糖中存在很多种 易于阅读,效率略低的方案,我们可以适当改写。

  比如 switch 语法糖。



int re = 0;
for(int i=0;i<10000000;i++){
  re = switch(i);
}

protected int switch(int z){
  int i = z%10+1;
switch(i){
  case 1: return 3;
  case 2:return 6;
case 3:return 7;
case 4:return 8;
case 5:return 10;
case 6:return 16;
case 7:return 18;
case 8:return 20;
default:return -1;
}
}


switch 本身的性能并不差,但是仍存在可以提高的空间,尤其在随机次数比较大的高频调用中。

我们可以换一种思路,来取得比较可观的效果。

  int re = 0;
int [] sw = new int[]{3,6,7,8,10,16,18,20};
for(int i=0;i<100000000;i++){
   re = arrayInt(sw,i);
}

protected int arrayInt(int []sw,int z){
  int i = z%10+1;

  if(i>7 || i<1){
   return -1;// 缺省值
}else{
  return sw[i];
}
}


这种思路 相比与switch 分支判断来说,效率有所提升,因为对数据的随机访问是非常快的。
分享到:
评论

相关推荐

    java JDK 1.8-8u202/ 16.0.1

    3. **JEP 382: Vector API**:预览版的Vector API提供了一种高性能的向量运算方式,利用硬件加速,提高计算密集型代码的性能。 4. **JEP 383: Strongly-Typed HTTP Client**:引入了一个新的HTTP客户端API,提供了...

    Java 编程军规.docx

    ### Java编程军规详解 #### 引言 Java作为一种广泛使用的编程语言,在软件开发领域扮演着极其重要的角色。为了确保代码质量,提升程序的健壮性和可维护性,制定一套行之有效的编程准则显得尤为必要。“Java编程...

    java面试宝典2017

    - **替代方案**: 可以通过`break`和`continue`结合标签来实现类似`goto`的功能。 #### 3. `&`和`&&`的区别 - **`&`**: 是按位与运算符,也可以用于布尔表达式中表示逻辑与操作。当两边的条件都为真时结果为真,...

    1000道包含JAVA所有知识点面试的宝典

    - **替代方案**:可以通过使用`break`或`continue`来实现类似的功能,或者通过其他结构化编程技术实现更复杂的流程控制。 #### 3. `&`和`&&`的区别 - **`&`**:按位与运算符,也可以用于布尔表达式的逻辑与运算。 ...

    二级Java测试题收集

    1. **基础语法**:Java的基础语法是学习者必须掌握的首要内容,包括变量声明、数据类型(如整型、浮点型、字符型、布尔型以及引用类型)、运算符(算术、比较、逻辑、位运算等)、流程控制(如if-else、switch、for...

    2013java面试宝典

    5. `switch`语句不能直接作用于`byte`,因为Java 7之前`switch`只支持`byte`, `short`, `char`, `int`和枚举类型。Java 7以后添加了对`String`的支持,但不支持`long`。 6. 对于`short s1 = 1; s1 = s1 + 1;`,由于...

    java知识17

    1. 基础语法:Java的基础语法包括变量定义、数据类型(如整型、浮点型、字符型、布尔型以及引用类型)、运算符(算术、比较、逻辑、位运算等)、流程控制语句(如if-else、switch、for、while、do-while)以及方法的...

    Java经典问题答案(带书签).pdf

    - `StringBuilder`性能更高,适用于单线程环境。 **Math随机数问题** - `Math.random()`返回一个介于0.0(含)至1.0(不含)之间的双精度值。 - 生成特定范围内的随机数需要进一步处理。 **Strings="a"+"b"+"c...

    Java数据结构与算法

    - **定义**:当某些操作的成本很高时,通过分析一系列操作的平均成本来评估算法的整体性能。 #### 三、线性表 **3.1 线性表及抽象数据类型** - **3.1.1 线性表定义** - **定义**:n个数据元素的有限序列。 - *...

    数据结构与算法java中文_草稿

    **1.4 Java与指针**:与C/C++不同,Java没有指针概念,使用引用替代,简化内存管理同时避免了许多潜在错误。 #### 数据结构与算法基础 **2.1 数据结构** - **基本概念**:数据结构是计算机存储、组织数据的方式,...

    java自觉总结

    自 JDK 1.4 版本以来,Java 的性能不断优化,成为历史上最为成熟的版本之一。 Java 与 C 语言相比,具有明显的差异。Java 的标识符规则更宽松,可以以字母、下划线或美元符开头,后续可跟这些符号和数字。在数据...

    Java面试宝典2013版

    Java使用结构化控制流(如if、while、for、switch)来替代goto。 3. &和&&的主要区别在于短路逻辑。&是按位与运算符,用于处理二进制位;而&&是逻辑与运算符,只有当左侧表达式为真时才会评估右侧表达式,这在条件...

    JAVA语言与其程序设计范例

    在Java中,控制流程语句如if、switch、for、while等是编写逻辑的重要工具。此外,异常处理也是Java编程不可或缺的一部分,try-catch-finally结构用于捕获和处理运行时错误,确保程序的健壮性。 函数和方法是Java...

    java面试宝典

    - **替代方案:** 可以使用break和continue等关键字来实现类似的功能。 **3. 说说&&与&的区别?** - **逻辑运算符&&:** 表示逻辑与操作,短路运算。如果第一个表达式为false,则第二个表达式不会被计算。 - **位...

    Java安全与质量编码规范.docx

    - **循环中避免使用低性能方式拼接字符串:** 使用StringBuilder或StringBuffer替代字符串拼接操作。 - **避免使用递归:** 除非特殊情况,否则应避免使用递归,以防栈溢出。 - **sleep()参数控制:** 合理设置...

    jdk 1.7.80 64位官方正式版 jdk-7u80-windows-x64

    Java Development Kit (JDK) 是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序所需的所有...虽然Java 8及更高版本已经推出,但针对特定需求和兼容性考虑,JDK 1.7.80仍具有不可替代的价值。

    C入门视频Android Jni学习用

    通过NDK可以创建高性能的底层模块,并与Java代码无缝集成。 #### 2. JNI (Java Native Interface) JNI是Java平台标准的一部分,为Java代码提供了调用本地C/C++代码的能力。在Android开发中,可以通过JNI来实现Java...

Global site tag (gtag.js) - Google Analytics