Tag: 性能

为什么我不使用100%?

我正在IBM WebSphere Application Server v8.5.5.1中执行一个长时间运行的批处理过程,该过程从ECM存储库获取数据,然后将其转换为PDF文档。 它运行大约20k的小文档,组成整批。 现在我得到大约20个文档/秒,但系统只有大约45-55%的CPU使用率,所以有些东西阻止我让它全速运行 我在HP Proliant DL385p Gen8(32GB RAM,2 x AMD Opteron 6272,每个16个2.1GHz内核)上运行Windows 2012 R2 Standard 所有资源都是本地存储的,因此几乎不会有任何网络流量困扰。 我也尝试将PDF输出文档写入RAMDISK,但根本没有任何改进。 我应该在哪里查看让这个过程使用我服务器的全部function的任何想法? 谢谢!! PS:请参阅附件参考图片 CPU使用率图

Java Swing – JFreeChart应用程序运行缓慢

我创建了JFreeChart程序,它可以: 移动样条点 不允许交叉黑色样条(边界样条) 实时创建新样条线(如Grapher) 鼠标滚轮缩放 要将新系列添加到数据集,我使用此函数: public static XYSeriesCollection createSplineDataset(File[] polFiles) { dataset = new XYSeriesCollection(); for (File polFile : polFiles) { XYSeries series = new XYSeries(polFile.getName()); Scanner s = null; try { s = new Scanner(new File(polFile.getAbsolutePath())); }catch (FileNotFoundException ex) { System.out.println(“Scanner error!”); } s.useLocale(Locale.US); while (s.hasNext()) { float x = s.nextFloat(); float y […]

对于日志记录方法,哪个数组创建与字符串连接具有更好的性能?

传递多个字符串进行日志记录时,最好使用varargs还是字符串连接? 将在生产环境中禁用日志记录。 考虑以下代码, public void log(int logLevel, String … msg) { if (logLevel >= currentLogLevel) { for (String m : msg) { // print the log to file } } } // calling log(2, “text1”, var1, “text2”); 比。 public void log(int logLevel, String msg) { if (logLevel >= currentLogLevel) { // print the log to […]

可以在应用程序中过于频繁地使用非原始的Integer / Long数据类型,会损害性能吗?

我在我的应用程序中经常使用Long / Integer数据类型来构建Generic数据类型。 我担心使用这些包装器对象而不是原始数据类型可能对性能有害,因为每次它需要创建一个昂贵的操作对象。 但似乎我没有其他选择(当我必须使用带有generics的原始物)而不是仅仅使用它们。 但是,如果你可以建议我能做些什么来改善它,那还是很棒的。 或任何方式,如果我可以避免它? 这也可能是什么缺点? 建议欢迎!

Java 6在JDK,JVM或两者中的性能都有所提高吗?

我一直在想Java SE 6中吹捧的性能改进 – 它是在编译器还是运行时? 换句话说,JDK 6编译的Java 5应用程序是否会在JSE 5下看到改进运行(表明改进的编译器优化)? JDK 5编译的Java 5应用程序是否会在JSE 6下看到改进运行(表明改进的运行时优化)? 我注意到,在完全相同的代码库下,JDK 6下的编译几乎是JDK 5下的两倍。 我希望至少有一些额外的时间花在编译器优化上,希望能够带来更高性能的JAR和WAR。 Sun的JDK信息并没有真正详细说明他们所做的性能改进 – 我认为它有点来自A栏,有点来自B栏,但我想知道哪个是更大的影响力。 有谁知道在JDK 6和JDK 5上做过的任何基准测试?

Java性能:地图与列表

我在JSF1.2和Richfaces 3.3.2中构建了一个树分页,因为我有很多树节点(类似于80k),并且它很慢.. 因此,作为第一次尝试,我使用页面和页面的节点列表创建一个HashMap。 但是,性能不够好…… 所以我想知道是否比HashMap更快,可能是列表或其他东西。 有人有这方面的经验吗? 我能做什么? 提前致谢。 编辑。 最大的问题是我必须在树的子节点中validation用户的权限。 我知道这是一个大问题:这个validation很慢,因为我必须进入节点,我没有一个好方法来知道用户是否在10级节点中拥有权限而没有迭代所有节点。 除此之外,同样的三个在更多的地方使用了……我为什么要做这个分页的基本原因是客户端会慢很多,因为richfaces生成的结构,很多tr和td的,浏览器就这么疯狂了。 所以,不幸的是,我必须加载所有节点,并且只是客户端分页,我需要知道它们中的哪些更快迭代… 对不起我的英文不好。

Java String Immutability和使用相同的字符串值来创建新字符串

我知道问题的标题不是很清楚,对不起,不知道如何提出。 我有一个非常基本的java实现问题,我想关注应用程序性能,但它也涉及java中的String创建模式。 我理解Java中字符串的不变性概念。 我不确定的是,我在某处读到以下内容不会产生两个不同的String对象: String name = “Sambhav”; String myName= “Sambhav”; 我想知道Java是如何做到的? 它是否实际在程序存储器中查找String值并检查它是否存在,如果它不存在则创建一个新的String对象? 在这种情况下,显然它节省了内存,但存在性能问题。 还可以说我有这样的代码: public void some_method(){ String name = “Sambhav”; System.out.println(name); // or any random stufff } 现在每次调用此函数时,是否有新的String被添加到内存中,或者我是否使用相同的String对象? 我很想知道这一切是如何发生的见解的? 如果我们这样说的话 String name = “Sambhav”; String myName= “Sambhav”; 因为引用不会创建新对象,怎么样 String name = new String(“Sambhav”); String myName= new String(“Sambhav”); Java仍然能够捕获字符串是否相同,只是将myName指向与前一个语句中创建的对象相同的对象?

JDK8 LocalDate.toEpochDay的性能下降奇怪

如果我们最终得到一个带JDK8的快速日期时间库,我很好奇。 几乎所有的LocalDate计算都使用toEpochDay所以我查看了源代码 ,大量的分支和分支让我好奇,如果我能做得更好的话。 我消除了一些分支和除了一个分区以外的所有分支,但是加速比预期更差。 所以我的第一个问题是如何使用多次除法的算法只需要大约30个周期(吞吐量)。 霍尔格的评论似乎已经回答了这个问题:一个小常数的除法得到了乘法的JIT编辑。 我是手动完成的,现在我一直在以原来的实施方式击败2倍。 基准测试非常简单,只需迭代一组随机的LocalDate并将它们转换为toEpochDay 。 尽管具有随机性,但结果非常一致。 数组的大小是一个参数,我的主要问题是2000到30000之间的大幅减速来自何处 。 应该会有一些减速,因为数据不再适合L1缓存,但两种算法的内存访问完全相同(即,没有,但从数组中获取date )。 仍然存在的问题是: 如何在迭代数组时,同一函数的两个简单的无内存访问实现的行为会发生变化? 原始算法的速度比我的慢得多。 我的算法在这里可能不值得复制,它没有文档记录,与原版一样神秘,而且只有一个非常基本的测试 。

Java8 Lambda性能与公共函数

我已经使用Java8 VS对lambda性能进行了一些演示测试。 Java8公共function。 案例如下: 我有一个10人(5男5女)的名单。 我想知道哪个女人的年龄在18到25岁之间 现在,当我执行这些步骤数百万次时,结果将是: 使用ForEach的Lambda:395毫秒(使用JUnit时为396毫秒) 公共函数采用:173毫秒(使用JUnit时为169毫秒) 使用Collect的Lambda:334毫秒(使用JUnit时为335毫秒) 现在我没想到lambda的执行时间比普通函数长两倍到六倍。 所以,现在我非常想知道我是否错过了这里的一些东西。 源代码可以在这里找到: pastebin.com/BJBk4Tu6 跟进: 将列表扩展为1.000.000项时 并过滤所有年轻的成年女性一次 结果将是: 使用ForEach的Lambda:59毫秒 公共职能采取:15毫秒 Lambda with Collect:12毫秒 但是,当我尝试过滤100,000次现有1.000.000人的同一列表时,结果将是: 使用ForEach的Lambda:227毫秒 公共职能采取:134毫秒 收集Lambda:172毫秒 因此,作为最终结论:Lambdas在过滤较大列表时更快,而公共函数(旧方法)在过滤较小列表时更快。 此外,在过滤任何列表多次时,公共function更快,无论出于何种目的,您都需要这样做。 最新代码: pastebin.com/LcVhgnYv

Java速度访问数组索引与临时变量

什么是Java更快。 直接多次访问数组索引,或将数组索引的值保存到新变量并使用它来进行后续计算? 访问索引 if ((shape.vertices[0].x >= fromX && shape.vertices[0].x <= toX) || // left side of shape in screen (shape.vertices[0].x = fromX) || // right side of shape in screen (shape.vertices[0].x >= fromX && shape.vertices[0].x + shape.width <= toX)) { // shape fully in screen // … } 临时变量 float x = shape.vertices[0].x; float y […]