草庐IT

OPTIMIZATION

全部标签

java - 如何在 Java 中更快地计算 sha256?

我发现在java中计算sha256很慢。例如,它比python慢。我编写了两个简单的基准测试来计算1GB零的sha256。在这两种情况下,结果相同且正确,但python时间为5653ms,java时间为8623ms(慢53%)。每次结果都相似,这对我来说是一个重要的区别。如何让java的计算速度更快?基准:Java:importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;publicclassBenchmarkSha256{publicstaticvoidmain(String...a

java - 优化 SSE 代码

我目前正在为需要一些性能改进的Java应用程序开发C模块(请参阅Improvingperformanceofnetworkcoding-encoding了解背景信息)。我已经尝试使用SSE-intrinsics优化代码,它的执行速度比Java版本(~20%)快一些。然而,它仍然不够快。不幸的是,我在优化C代码方面的经验有些有限。因此,我很想获得一些关于如何改进当前实现的想法。构成热点的内部循环如下所示:for(i=0;i 最佳答案 即使不查看程序集,我也能立即看出瓶颈来自4元素收集内存访问和_mm_set_epi32打包操作。在内部

java - 为什么方法访问似乎比字段访问更快?

我正在做一些测试,以找出使用getters/setters和直接字段访问之间的速度差异。我写了一个像这样的简单基准应用程序:publicclassFieldTest{privateintvalue=0;publicvoidsetValue(intvalue){this.value=value;}publicintgetValue(){returnthis.value;}publicstaticvoiddoTest(intnum){FieldTestf=newFieldTest();//testdirectfieldaccesslongstart1=System.nanoTime();f

java - 将 byte[] 字符串转换为其整数值的快速方法

我正在从磁盘读取一个大文件。该文件只包含数字,编码为普通的旧ASCII。目前,我正在分块阅读,然后做这样的事情:byte[]token;//bytesrepresentingabunchofnumbersintn=Integer.parseInt(newString(token));换句话说,我正在转换为字符串,然后将字符串解析为整数。我想知道是否有一种方法可以使用快速运算(如移位和二进制运算)来代替?我怀疑这可以做得更快。例如,数字1、2、3的原始字节为49、50、51。有什么破解的想法吗? 最佳答案 intn=0;for(byt

java - 最终静态与最终非静态字段和 JVM 优化

我很好奇JVM如何处理staticfinal字段。我看到一个类似的问题here但这不是我要找的。让我们考虑这样的例子:publicclassTestClassX{publicfinalintCODE_A=132;publicfinalintCODE_B=948;publicfinalintCODE_C=288;//someothercode}publicclassTestClassY{publicstaticfinalintCODE_A=132;publicstaticfinalintCODE_B=948;publicstaticfinalintCODE_C=288;//someoth

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、自适应粒子群优化二、使用步骤代码总结前言提示:这里可以添加本文要记录的大概内容:下面是一个关于自适应粒子群优化(AdaptiveParticleSwarmOptimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考一、自适应粒子群优化自适应粒子群优化是一种优化算法,它是粒子群优化(ParticleSwarmOptimization,PSO)的一种变体。与传统的PSO不同,APSO使用自适应策略来调整算法的参数,以提高算法的性能和收敛速度。APSO的主要思想是根据群体的收

java - 生成 '1'位比例可变的随机二进制数

我需要一个函数来生成随机整数。(现在假定Javalong类型,但稍后将扩展为BigInteger或BitSet。)棘手的部分是有一个参数P指定结果中任何位为1的(独立)概率。如果P=0.5,那么我们可以只使用标准随机数生成器。P的一些其他值也很容易实现。这是一个不完整的例子:Randomrandom=newRandom();//...longnextLong(floatp){if(p==0.0f)return0L;elseif(p==1.0f)return-1L;elseif(p==0.5f)returnrandom.nextLong();elseif(p==0.25f)returnn

java - 如何使用单个 replaceAll 查找 Java 中两个字符串的公共(public)字符?

假设我有:Strings="1479K";Stringt="459LP";我想回去StringcommonChars="49";两个字符串之间的共同字符。显然可以使用如下标准循环:StringcommonChars="";for(i=0;i但是我希望能够使用replaceAll在一行中完成此操作。这可以按如下方式完成:StringcommonChars=s.replaceAll("["+s.replaceAll("["+t+"]","")+"]","");我的问题是:是否可以使用一次replaceAll调用来做到这一点?什么是正则表达式?我想我必须使用某种前瞻性,但当我想到它时,我的大

java - 加快全计数排序的方法

我在hackerrank上遇到了一个问题。https://www.hackerrank.com/challenges/countingsort4由于超时,我的第一次尝试通过了除最后一个以外的所有测试用例。在没有想出更有效的算法后,我通过使用StringBuilder而不是直接连接字符串来改进代码。这使运行时间从5多秒减少到3.5秒。我的问题是有没有其他方法可以缩短运行时间?谢谢。以下是我的代码。publicclassSolution{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intN=

java - 如何快速将大型 txt 文件加载到 BigInteger 中?

我正在导入一个大文本文件,1700万位长,我正在使用以下代码:BufferedReaderreader=newBufferedReader(newFileReader("test2.txt"));Stringline=reader.readLine();System.out.println("Done");BigIntegernum=newBigInteger(line);System.out.println("DoneAgain");它几乎立即加载文件并打印出'Done'但是String需要很长时间(大约一个小时)才能转换为BigInteger,我能做些什么来加快速度并快速加载号码吗