草庐IT

Performance

全部标签

数值算法中的 Java 性能

我很好奇Java数值算法的性能,例如矩阵矩阵double乘法,使用最新的JIT机器与手动调整的SSEC++/汇编程序或Fortran对应物进行比较。我在网上看过,但大部分结果都来自将近10年前,我了解到Java从那时起取得了很大进步。如果您有将Java用于数字密集型应用程序的经验,可以分享您的经验吗?另外,在循环相对较短且内存访问不是很统一但仍在L1缓存限制内的内核中,Java的性能如何?如果这样的内核连续执行多次,JVM能否在运行时对其进行优化?谢谢 最佳答案 我用Java编写了一些相当大且对性能敏感的数字代码(通常处理大型dou

java - 为什么这些正则表达式在 Java 中执行起来很慢?

我正在尝试使用正则表达式来确定用户在文本框中输入内容时应用的格式。正则表达式如下:(\\s?["+alphabet+"]{9,9})+确定输入是否是给定字母表中长度为9的一个或多个字符串,可能由空格分隔。(>[\\w\\s]+\\n["+alphabet+"\\s]+)+检查输入是否在FASTAformat中与inputString.matches(regexString)匹配时,正则表达式运行得非常慢。这是为什么?我认为这可能是由于Java存储了所有可能的匹配项(此时我不需要),但是在每个括号中添加?:会破坏正则表达式。应该怎么做?谢谢,马丁编辑1:我无法重现此问题-它只发生在一台计

java - try-catch block 的放置会影响性能吗?

放置try-catchblock会影响性能吗?示例1:try-catchblock在while循环中while(true){try{//...readfromafile}catch(EOFExceptione){break;}}示例2:try-catchblock环绕while循环try{while(true){//...readfromafile}}catch(EOFExceptione){//:P}从逻辑上讲,这两个例子是等价的,但我更喜欢哪个呢? 最佳答案 Shouldjavatryblocksbescopedastightl

java - 加速 Jetty 上的应用程序启动

我有一个配置了Guice的小型Web应用程序,Jersey和EclipseLink,并在开发期间在jetty(8.0.0.M1)上运行此应用程序。大约有10个(小的)JPA托管类(实体和可嵌入类),总共大约有20个类。初始启动需要15秒+5秒用于第一个请求。似乎JPA正在处理第一个请求,因为我启用了表生成策略“创建”,并在第一个请求中看到Maven的一些JPA输出。重新加载大约需要10秒,重新加载后的第一个请求大约需要3到4秒。您可能会认为,启动时间还不错,但我想知道是否可以加速启动以像使用Django一样更流畅地工作。有启动调整的想法吗? 最佳答案

Java super 调整,几个问题

在提出问题之前,请您不要无缘无故地去上关于优化的讲座。纯粹出于学术性考虑以下问题。我一直在考虑Java中根(即经常使用并且经常互相访​​问)类之间的访问效率,但这适用于大多数OO语言/编译器。您可以用Java访问某些东西的最快方法(我猜是这样)是静态的最终引用。从理论上讲,由于该引用在加载期间可用,因此,良好的JIT编译器将无需进行任何引用查找即可访问变量,并将对该变量的所有访问直接指向恒定地址。也许出于安全原因,它无论如何都无法正常工作,但请忍受...假设我已经确定在启动时会遇到一些操作问题或传递一些参数,这意味着我无法拥有静态的最终引用,即使我要麻烦每个类按原样构造另一个类建议使J

java - 在 Selenium 中计时页面加载时间

我正在使用selenium在我的网站上记录一些性能测试。例如登录时间、查询时间等。我在SeleniumIDE上记录了一个示例脚本。我现在让它运行一个SeleniumRC(java)。publicvoidtestNew()throwsException{selenium.open("/jira/secure/Dashboard.jspa");selenium.selectFrame("gadget-10371");selenium.type("login-form-username","username");selenium.type("login-form-password","pw"

java - 改进两次遍历数组(同一数组上的嵌套循环)

我有一大组数据,我想循环浏览这些数据,以确定从时间点“D1”到future时间点“D2”的数据集的各种统计信息。基本上,每次值之间的差异大于10时,我都想添加到数据库中。例如:Datum[]data=x;for(Datumd1:data){Datum[]tail=y;//Fromd1upto10elementsaheadfor(Datumd2:tail){//Calculatedifferenceif((d2.val-d1.val)>10){//Insertintodatabase}}}我的问题是,是否有更好的算法/方法来执行此操作?由于tail中的9个元素在外循环的下一次迭代中被重用

java - java的UTF-8字符串类

我需要在内存中保存大量字符串对象(数百MB)并且我想以UTF-8格式保存它们,因为在大多数情况下它需要默认实现使用的内存的一半。默认的String类需要12个字符的字符串60个字节(参见http://blog.griddynamics.com/2010/01/java-tricks-reducing-memory-consumption.html)。我的大多数字符串都是10-20个字符长。我想知道是否有一些开源库为此类字符串提供包装器?我知道如何将String转换为UTF-8字节数组,但我正在寻找一个包装类,它将提供所有需要的实用程序函数(Hash、Equal、toString、fro

java - 如何加快 jar signer 的速度?

我使用ant为web-start部署签署我的jars。Ant.signjar在web-start签名时非常慢。如何加快签名过程? 最佳答案 我找到了一种可能的解决方案。在构建脚本的早期,ant.signjar会依次调用所有jar(我们使用gradle进行构建,依赖项超过20MB)。现在我使用groovy库GPars方法:withPool(4)和eachParallel{ant.signjar}。我的电脑有2个内核,构建服务器有4个内核,这很酷。(快3倍)第二个技巧是缓存:我们对所有RELEASE/NON-SNAPSHOT依赖项使用缓

java - 如何进行良好的性能比较测试?

要编写好的比较测试,您必须运行它数千(百万)次。它将(在大多数情况下)平衡其他程序的影响。但是如果JVM可以影响结果。例如:第一个解决方案是:finalStringBuilderstringBuilder=newStringBuilder();stringBuilder.append(getStrOne());stringBuilder.append(getStrTwo());finalStringresult1=stringBuilder.toString();第二个是:finalStringresult2=getStrOne()+getStrTwo();我不知道哪个更好,因为JVM