草庐IT

Performance

全部标签

java - 有没有更快的方法来比较 Java 中的两个 Int 数组?

我有两个整数数组,每个都相同大小,比如n(n是可变的,所以我可以有两个大小为4或5或6等的数组)以及每个数字的值范围cantake的范围是0-9。例子Integer[]one={1,9,3,4}Integer[]two={1,1,9,3}现在,我想比较数组一和数组二,这样1)我可以获得相同位置的相同元素的数量。2)我可以得到相同但不在同一位置的数字。我采用的方法是对于(1)遍历数组1并针对每个索引检查one[i]==two[i]。-简单。For(2)遍历两个数组并fori!=j查看元素是否相同,如果相同则用-1标记它们以避免将来发生冲突.for(inti=0;i问题:现在我想知道是否有

java - 似乎在等待的线程的高 CPU 使用率

我目前正在运行一些JMeter测试来测试Web服务的性能。它使用了大量的CPU。对于一个JMeter请求线程,它使用10-30%(取决于请求类型)。当我将其增加到仅15个线程时,我的CPU利用率约为95%。自然,我想弄清楚发生了什么。我做了一个HprofCPU示例(我尝试了times选项,但需要一个半小时才能启动我的服务,并且没有消息会通过)。以下是该采样的结果片段(超过15分钟)。CPUSAMPLESBEGIN(total=220846)FriAug2213:38:542014rankselfaccumcounttracemethod114.96%14.96%33038300514j

java - String类中的split方法和Apache StringUtils中的split方法有什么区别?

我正在逐行读取一个文件,并希望根据特定的分隔符拆分每一行。我在String类和StringUtils类中找到了一些可用的选项。所以我的问题是哪个是更好的选择,为什么? 最佳答案 这取决于用例。What'sthedifference?String[]拆分(String正则表达式)String[]results=StringUtils.split(Stringstr,StringseparatorChars)Apacheutilssplit()是null安全的。StringUtils.split(null)将返回null。JDK默认不是

java - 如果我在循环外评估数组的大小,运行时效率会有差异吗?

迭代元素(在本例中为整数)数组的传统方法如下:int[]array={5,10,15};for(inti=0;i但是,这是否意味着在每次迭代后都会重新评估“array.length”?这样做不是更有效率吗?:int[]array={5,10,15};intnoOfElements=array.length;for(inti=0;i这样,(据我了解)程序只需计算一次,然后查找“noOfElements”变量的值。注意:我知道增强的for循环,但是当您想使用正在递增的变量(本例中的“i”)来实现其他目的时,不能使用它在for循环中。我怀疑这实际上是一个问题,即Java编译器是否有能力实现“

java - Cassandra 批量查询与单次插入性能

我使用Cassandrajava驱动程序。我每秒收到150k个请求,我将这些请求插入到具有不同分区键的8个表中。我的问题是哪种方法更好:批量插入这些表一个一个插入。我问这个问题是因为,考虑到我的请求大小(150k),批处理听起来是更好的选择,但因为所有表都有不同的分区键,批处理看起来很昂贵。 最佳答案 请从以下链接查看我的回答:Cassandrabatchqueryperformanceontableshavingdifferentpartitionkeys批处理不是为了提高性能。它们用于确保原子性和隔离性。Batchingcanb

java - 使用 try-catch over if 条件以在 java 中以最小的性能影响安全地设置值

在这里,我的主要目标是安全地设置值,而不会对性能(速度、内存、CPU等)产生影响。我有一个愚蠢的选择(风格不佳)也在下面提到。那么,最好的方法是什么?选项1?选项2?还是另一个?选项1:if(animalData!=null&&animalData.getBreedData()!=null&&dogx.getBreed()!=null&&dogx.getBreed().getBreedCode()!=null&&animalData.getBreedData().get(dogx.getBreed().getBreedCode())!=null){dogx.getBreed().set

java - string.replaceAll() 性能是否受到字符串不变性的影响?

假设我在替换了1,000个匹配实例的大字符串上调用了replaceAll()。这是否意味着由于字符串不可变性而在过程中创建并重新分配了1,000个字符串?有没有更快的替代方案? 最佳答案 如果你深入研究String,您会看到它将replaceAll()委托(delegate)给Pattern&Matcher和Matcher.replaceAll()使用StringBuilder来存储最终返回的值。所以不,String.replaceAll()不会创建超过少量的对象。 关于java-str

java - 线程数和 Java 应用程序性能

您好:我有一个多线程Java应用程序。当前线程大小已经是100。我们目前使用的是4核CPU。但在不久的将来,CPU核心将增加一倍,甚至达到32核。为了充分利用内核,我们需要增加线程池的大小。但是您可能知道(也许我错了),Java在有10000个线程时很好,但是当线程为200、500、1000个线程时可能会出现性能问题。那么我们是否应该使用其他编程语言,例如scala。我的担心有道理吗? 最佳答案 使用现代JVM,Java进程可以创建操作系统允许的任意数量的线程。您的应用程序能否充分利用这些线程取决于您的应用程序的设计。如果可伸缩性是

java - 如何使用 ANT 只编译更改的源文件

我正在尝试编写用于编译源文件夹的ant构建,这里是我用于编译的脚本target。在我的项目中,我有将近1000个.java文件。当单个.java文件发生更改时,目标往往会编译所有.java文件。这使得开发非常缓慢。我只想知道是否有任何方法或代码可以更改任务的行为,以仅编译修改或更改的.java文件而不是所有.java文件。请帮帮我。 最佳答案 据我了解,仅编译修改后的java文件是antjavac任务的默认行为。Ant使用.java文件及其对应的.class文件的时间戳来确定是否需要重新编译Java文件。我已经在很多项目中使用过它,

java - Java 中最快的字符到字符串转换

我看到在Java中将char转换为Stirng的四种选择。v=Something.lookup(newString((char)binaryData[idx]));//SORRY!Wrong.v=Something.lookup(""+(char)binaryData[idx]);v=Something.lookup(String.valueOf((char)binaryData[idx]));v=Something.lookup(Character.toString((char)binaryData[idx])));我认为第一个是最慢的。二是很方便。我推测第三个可能会返回一个先前创建