草庐IT

PERFORMANCE

全部标签

java - 什么是样板代码、热点代码和热点?

我知道这些术语用于绩效成就/优化的上下文中。最近一直在做这方面的工作,并尝试搜索;但没有得到任何示例,这些示例清楚地阐述/描述了这些概念,并在现实世界的开发场景中实现了这些问题/概念。有人可以彻底解释这些术语、示例场景以及可能使用这些概念和术语的地方吗。谢谢。 最佳答案 “样板”与性能无关:它仅表示定义应用程序或使用某些框架所需的标准代码。它的代码在每个应用程序中可能都是相同的。另一方面,“热点”是指代码的一部分被多次执行,因此其性能对整体应用程序性能非常重要。通常热点是通过实际分析来识别的:如果它被多次执行就不是热点,但它非常微不

Java无限循环性能

我有一个只有在特定情况出现时才需要工作的线程。否则它只会迭代一个空的无限循环:publicvoidrun(){while(true){if(ball!=null){//dosomeCalculations}}}当循环实际上什么都不做但它必须检查它是否必须在每次迭代中进行计算时,它会影响性能吗?仅在需要时创建thisThread对我来说不是一个选项,因为我实现Runnable的类是一个一直显示的可视对象。编辑:那么下面是一个好的解决方案吗?还是使用其他方法更好(关于性能)?privatefinalObjectstandBy=newObject();publicvoidrun(){whil

java - 如何测量Java线程执行时间?

我想测量Java中的线程执行时间。现在我正在监视线程的开始和结束时间,但我认为它不太准确,因为线程可能会在执行期间挂起。 最佳答案 JavaMXBeans可以提供每线程CPU时间:importjava.lang.management.ManagementFactory;importjava.lang.management.ThreadMXBean;longnanos=ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId())

java - 为什么第一次调用构造函数花费的时间比其他调用多 10 倍?

classtestx{publictestx(){longstartTime=System.nanoTime();System.out.println((System.nanoTime()-startTime));}publicstaticvoidmain(Stringargs[]){newtestx();newtestx();newtestx();}}我总是得到类似于此7806660517的结果。为什么第一次调用比其他调用花费的时间多10倍? 最佳答案 因为此时JVM第一次加载了一堆类。一旦第一个System.nanoTime()

java - 高效检查多个条件

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我遇到了一种情况,我需要检查多个条件,其中每个组合都有不同的结果。在我的特定情况下,我有2个变量,它们是枚举类型,每个变量可以是2个不同的值。enumEnum1{COND_1,COND_2}enumEnumA{COND_A,COND_B}Enum1var1;EnumAvarA;这给了我4种可能的条件,这需要4种不同的结果。我想出了几种不同的方法来执行此操作,使用if语句或switch语句:

java - 访问器方法性能和优化

我经常遇到重复使用/滥用Getter方法来获取某些值或将其作为方法参数传递的代码,例如:publicclassTest{publicvoidsomeMethod(){if(person.getName()!=null&&person.getName().equalsIgnoreCase("Einstein")){method1(person.getName());}method2(person.getName());method3(person.getName());method4(person.getName());}}我一般是这样编码的,如下:publicclassTest{pub

java - 抛出 Java 异常时是否生成堆栈跟踪?

这是假设我们不调用.printstacktrace方法-只是抛出和捕获。我们正在考虑解决一些性能瓶颈。 最佳答案 不,堆栈跟踪是在构造异常对象时生成的,而不是在抛出时生成的。Throwable()构造函数调用fillInStackTrace()。(至少在Sun/Oracle的WindowsJDK6中是这样。) 关于java-抛出Java异常时是否生成堆栈跟踪?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

java - 类层次结构对java性能有多大影响?

我有扩展另一个类的类,扩展另一个类的类......等等。具有100级层次结构级别的类的工作速度有多慢(百分比),然后具有10级层次结构级别的类? 最佳答案 让我们试试看:classT1{}classT2extendsT1{}classT3extendsT2{}classT4extendsT3{}classT5extendsT4{}classT6extendsT5{}classT7extendsT6{}classT8extendsT7{}classT9extendsT8{}classT10extendsT9{}classT11exte

java - Oracle Java HotSpot VM 性能选项(+UseStringCache、+UseCompressedStrings、+OptimizeStringConcat)的当前状态是什么

我正在阅读JavaHotSpotVMOptions.我看到了一些有趣的VM开关,主要与字符串有关——这对我来说很有值(value),因为我的应用程序正在执行一些繁重的字符串操作。它们是:-XX:+UseStringCache-XX:+UseCompressedStrings-XX:+OptimizeStringConcat我想知道-这些开关是默认打开的吗?使用它们的真实经验是什么?它们有什么不同吗? 最佳答案 检查默认使用java-XX:+PrintFlagsFinal要找到你想要的东西你可以java-XX:+PrintFlagsF

java - 使用 Java 为大文件生成 MD5 非常慢

我正在使用Java为一些文件生成MD5散列。我需要为几个总大小约为1GB的文件生成一个MD5。这是我的代码:privateStringgenerateMD5(SequenceInputStreaminputStream){if(inputStream==null){returnnull;}MessageDigestmd;try{intread=0;byte[]buf=newbyte[2048];md=MessageDigest.getInstance("MD5");while((read=inputStream.read(buf))>0){md.update(buf,0,read);}