草庐IT

Performance

全部标签

java - DataInputStream\DataOutputStream 的性能

我目前正在使用缓冲流来读写一些文件。在这两者之间,我做了一些数学处理,其中一个符号是一个字节。阅读:InputStreaminput=newFileInputStream(outputname)input.read(byte[]b,intoff,intlen)写:OutputStreamoutput=newBufferedOutputStream(newFileOutputStream(outputname),OUTPUTBUFFERSIZE)output.write((byte)byteinsideaint);现在我需要添加一些标题数据,并支持短符号。我想使用DataInputStr

java - Speed4j 与 Perf4j

Speed4j和perf4j,同为Java性能分析工具,性质相似。如果我正在寻找Speed4j文档,我会得到以下信息:ThisisSpeed4j,averysimple(butfast)Javaperformanceanalysislibrary.ItisdesignedusingPerf4jasamodel,buthopefullyavoidingthepitfallsinherentinPerf4j'sdesign.Also,Perf4jdoesnotseemtobeseeingalotofdevelopmentthesedays.但不确定“避免Perf4j设计中固有的陷阱”是什么

java - 需要更快的阵列复制

经过一些阅读,我发现在java中复制数组的方式存在一些差异。对于我的应用程序,我有一个节点的递归树,每个节点包含一个二维板数组(8x8)。通过探查器测试,我能想到的最好的方法是java.util.Arrays.copyOf(array)方法,它使用nativeSystem.arraycopy。即便如此,我还是花费了80%的时间来创建新数组。如果有人对如何加快速度有任何想法,我将不胜感激。也许使用64项数组而不是8x8会更快。我很快就会对此进行测试。 最佳答案 您将80%的时间花在复制数组这一事实意味着以下两种情况之一:数组复制太慢;

java - Java 中 ArrayList 和 LinkedList 的区别——性能的原因

我认为我在理论上很好地理解了ArrayList和LinkedList之间的区别。然而,这是第一次,我对其进行了一些测试,测试结果与我的预期大相径庭。期望:Arraylist在插入时会比LinkedList慢开始,因为它必须“移动”元素,对于链表,它的仅更新2个引用。现实:在大多数迭代中都是一样的。对于少数人迭代,它更慢。现实:从beg中删除时性能相同。测试用例:1,000,000个元素publicstaticvoidmain(String[]args){intn=1000000;ListarrayList=newArrayList(n+10);longmilis=System.curr

java - IntelliJ 太多文件打开错误

在Ubuntu14.04LTS上的IntelliJIDEA13.1.5中,我看到大型项目中偶尔出现错误,提示“打开的文件太多”。有趣的是,这不会消失并完全卡住IDE。我已经尝试了以下方法来修复它。1)修改我的/etc/sysctl.conf使其具有本文中所示的这一行here.减少错误的发生频率:fs.inotify.max_user_watches=524288fs.file-max=3801802)将IntelliJ进程的ulimit-n设置提高到64k。我没有注意到这在性能上有任何差异,但我上面提到的文章声称它会有所帮助。3)将此添加到我的idea64.vmoptions文件中(有

java - "Fast"Java中的整数幂

[简短回答:糟糕的基准测试方法。你会认为我现在已经想通了。]问题表现为“找到一种快速计算x^y的方法,其中x和y是正整数”。典型的“快速”算法如下所示:publiclongfastPower(intx,inty){//Replacedmycodewiththe"better"versiondescribedbelow,//butthisversionisn'tmeasurablyfasterthanwhatIhadbeforelongbase=x;//otherwise,wemayoverflowatx*=x.longresult=y%2==1?x:1;while(y>1){base*

Java String.replace() 或 StringBuilder.replace()

在我使用5-10个替换的情况下是否有必要使用stringbuilder。StringsomeData="......";someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.rep

java - 附加字符串时出现速度问题

每当我尝试在字符串中添加数字时:Strings=newString();for(intj=0;j我的程序正在添加数字,但速度非常慢。但是当我改变我的程序并使其成为:StringBuffersb=newStringBuffer();for(intj=0;j我很快就得到了结果。为什么会这样? 最佳答案 s+=String.valueOf(j);每次调用都需要分配一个新的String对象,这是很昂贵的。StringBuffer只需要在包含的字符串太大时增加一些内部表示,这种情况很少发生。如果您使用StringBuilder,它可能会更快,

java - 删除冗余的 JUnit 测试套件测试

在我们的JUnit测试套件中,我发现了一些没有提高覆盖率的测试,因此应该将其删除(它们需要时间,但并没有真正为测试套件增加值(value))。我想知道有哪些工具可以为我发现冗余测试? 最佳答案 我认为这是对代码覆盖率指标的滥用。仅仅因为一个测试不会增加指标,它不一定是多余的——它可以测试一个特定的执行路径,该路径由LOC组成,这些LOC被其他几个测试一起覆盖,但代表了其他测试都没有覆盖的行为。请记住:代码行为受状态的影响很大,但据我所知,没有任何测试覆盖率工具可以衡量状态空间的覆盖率。除非你的测试套件的运行时间是一个严重的问题,否则

java - Java 中的正则表达式及其与 indexOf 相比的性能

请有人告诉我如何匹配“_”和句点“。”使用regex在字符串中excatly一次,使用indexOf()而不是regex表达式是否更有效。Strings="Hello_Wor.ld"ors="12323_!£££$.asdfasd"基本上,_和前后不能出现任何字符。唯一的要求是整个字符串应该只包含一次_和。 最佳答案 indexOf将比正则表达式快得多,并且可能也更容易理解。只测试是否indexOf('_')>=0,然后如果indexOf('_',indexOfFirstUnderScore).在此期间做同样的事情。privateb