Tag: 性能

如何在Java代码中使用scala.collection.immutable.List

我需要编写一个代码来比较Java的ArrayList和Scala的List 。 我很难让Scala List在我的Java代码中运行。 有人可以发布一个真正简单的“hello world”示例,说明如何在java代码中创建一个Scala List (在.java文件中)并添加100个随机数字吗? PS:我非常擅长Java,但从未使用过Scala。

如何使用两个数字作为Map键

我有两个数字,我想将它们一起用作Map的键。 目前,我正在连接他们的字符串表示。 例如,假设密钥号是4和12.我使用: String key = 4 + “,” + 12; 地图声明为Map 。 我觉得这太糟糕了! 我喜欢使用String以外的东西作为关键! 我想要以最快的方式创建这些密钥。 谁有个好主意?

`if`条件效率

我正致力于提高Java程序的性能。 在我改进了data structures和算法的复杂性之后,我正在尝试改进实现。 我想知道在条件中如何使用if语句真的很重要。 编译器是否将这两个版本视为相同? 它们的成本是否相同(如果我在if语句中有更多变量)? if(a && b && c && d && e && f && g) 要么 if(a) if(b) if(c) if(d) if(e) if(f) if(g) ( 在这个特定的项目中我并不关心可读性,我知道第二个不太可读 )

Java – System.out对性能的影响

我已经看到了这个问题 ,它有点类似。 我想知道它是否真的是影响我的应用程序性能的一个重要因素。 这是我的情景。 我有这个Java Web应用程序可以从电子表格上传数千个数据,每个行从上到下读取。 我正在使用System.out.println()在服务器端显示应用程序当前正在读取的行。 – 我知道创建一个日志文件。 实际上,我正在创建一个日志文件,同时在服务器的提示符下显示日志。 是否还有其他方法可以在提示符下打印当前数据?

在Java中为一个Integer对象分配了多少内存? 如何找出任何自定义对象的这个值?

测量堆中的内存应该用于创建某种类型的新对象的正确方法是什么(让我们谈谈Integers以保持简单)? 没有实验可以计算出这个值吗? 那种情况下的规则是什么? 这些规则是在某处严格规定的还是从jvm到jvm不等?

性能问题:将hexchar转换为Java中的数字值的最快方法?

我想从表示hex值(大写或小写)的字符转换为字节,如 ‘0’->0, ‘1’ -> 1, ‘A’ -> 10, ‘a’ -> 10, ‘f’ -> 15 etc… 我会经常调用这种方法,所以性能很重要。 有没有比使用预先初始化的HashMap更快的方法来获取值? 回答 看起来这是使用switch-case和Jon Skeet的直接计算解决方案之间的一个折腾 – 尽管如此,交换机案例解决方案似乎有点微不足道。 Greg的arrays方法胜出。 以下是各种方法的200,000,000次运行的性能结果(以ms为单位): Character.getNumericValue: 8360 Character.digit: 8453 HashMap: 15109 Greg’s Array Method: 6656 JonSkeet’s Direct Method: 7344 Switch: 7281 多谢你们! 基准方法代码 你好,JonSkeet,你是​​老竞争对手。 😉 public class ScratchPad { private static final int NUMBER_OF_RUNS = 200000000; […]

Java – 调用静态方法与手动内联 – 性能开销

我感兴趣的是我是否应该手动内联在一些性能敏感算法中称为100k-100万次的小方法。 首先,我认为,由于没有内联,我会产生一些开销,因为JVM必须确定是否内联此方法(甚至不能这样做)。 然而,前几天,我用静态方法的调用替换了这个手动内联代码,并看到了性能提升。 怎么可能? 这是否表明实际上没有开销,让JVM内联“意志”实际上提升了性能? 或者这很大程度上取决于平台/架构? (发生性能提升的示例是使用静态方法调用swap(int[] a, int i, int j) )替换数组交换( int t = a[i]; a[i] = a[j]; a[j] = t; )) swap(int[] a, int i, int j) 。另一个没有性能差异的例子是当我内联一个名为1000000次的10线程方法时。)

在捕获exception时是否有理由不使用final关键字?

我在一些示例BlackBerry Java类中看到了一些代码: try { // stuff that will throw an exception } catch(final Exception e) { // deal with it } 我认为final是为了表现。 根据标题,因为很少(永远?)任何理由修改已被抛出的exception,它们是否总是final ? 如果是这样,这不是编译器可以完成的事情吗? 或者由编译器完成并手动添加final没有任何影响?

替代Java中的嵌套切换语句

所以今天我编写了一个方法,结合了嵌套switch语句的使用,代码看起来相当干净简洁,但我被告知嵌套的switch语句通常不是最好的方法,因为它们可能会让人感到困惑。您添加的switch语句。 以下是我的代码的示例: EnumOne enumOne; EnumTwo enumTwo = null; EnumTwo enumThree = null; switch (enumOne) { case CASE_ONE: switch (enumTwo){ case A: enumTwo = EnumTwo.B; break; case C: enumTwo = EnumTwo.D; break; default: break; } switch (enumThree) { case AA: enumThree = EnumTwo.BB; break; case CC: enumThree = EnumTwo.DD; break; default: break; } break; case CASE_TWO: […]

Java应用程序分析

我正在寻找一个Java代码分析器,我可以用它来分析我的应用程序(它是一个在后端运行的服务)生产(所以意味着低调,它不能减慢我的应用程序)。 主要是我想调用树分析,也就是说a()调用b()然后b()调用c(),然后a()b()和c()花了多少时间,包括和排他。 已经看过jvisualvm和jprofiler ,但这不是我想要的,因为我无法将我的生产应用程序绑定到它们,因为它会导致一个主要的性能问题。 此外,我确实通过了metrics ( https://github.com/dropwizard/metrics ),但它没有给我一个function来分析调用树。 Callgrind ( http://valgrind.org/docs/manual/cl-manual.html )类型库是我需要的,因为它提供了调用树分析function和高级选项,如避免调用循环(递归)。 但是我不确定Callgrind是否可以用于生产,因为它会在程序终止时转储数据。 任何人都可以建议用于java的好的调用树分析器,可以在不影响性能的情况下用于生产吗?