草庐IT

PERFORMANCE

全部标签

java - Camel ActiveMQ 性能调优

情况目前,我们在ActiveMQ库之上使用一些自定义代码来进行JMS消息传递。我一直在考虑切换到Camel,以便于使用、维护和可靠性。问题使用我目前的配置,Camel的ActiveMQ实现比我们的旧实现要慢得多,无论是在发送和接收每条消息的延迟方面,还是在发送和接收大量消息所花费的时间方面。我试过调整一些配置(例如最大连接数),但无济于事。测试方法我有两个应用程序,一个使用我们的旧实现,一个使用Camel实现。每个应用程序将JMS消息发送到本地ActiveMQ服务器上的一个主题,并且还监听关于该主题的消息。这用于测试两个场景:-在循环中向主题发送100,000条消息,并查看从开始发送到

java - 排序时非常奇怪的效率怪癖

我目前正在上数据结构类(class),正如您所料,我们必须做的其中一件事就是编写一些常见的排序。在编写我的插入排序算法时,我注意到运行速度明显快于我导师的算法(对于400000个数据点,我的算法花费了大约30秒,他的算法花费了大约90秒)。我通过电子邮件将我的代码发给他,当它们都在同一台机器上运行时,结果相同。我们设法浪费了40多分钟,慢慢地将他的排序方法改为我的排序方法,直到完全一样,逐字逐句,除了一个看似随意的事情。首先,这是我的插入排序代码:publicstaticint[]insertionSort(int[]A){//Checkforillegalcasesif(A==nul

Java AWT : Is Font a lightweight object?

当我使用Java的AWT时,创建一个Font对象的开销有多大?我应该在可行的时候缓存Font,还是它只是对AWT已经在内部缓存的重量级字体的轻量级引用? 最佳答案 如果你查看Font的源代码(这是OpenJDK),带有名称、样式、大小的构造函数显然是轻量级的:publicFont(Stringname,intstyle,intsize){this.name=(name!=null)?name:"Default";this.style=(style&~0x03)==0?style:0;this.size=size;this.point

java - 为什么 ".concat(String)"比 "+"快这么多?

这个问题在这里已经有了答案:Stringconcatenation:concat()vs"+"operator(12个答案)关闭8年前。我编写的一些代码比较了用"string"+"string"连接字符串所需的时间:for(inti=0;i到"string".concat("string"):for(inti=0;i其中str=="string"。我得到的输出始终与此相似,尽管平均差异通常接近61纳秒:Stringstr2=str+str:118.57349468nanosecondsStringstr2=str.concat(str):52.36809985nanoseconds.c

java - CPU 使用率和 Object.wait

我使用JProfiler分析我的应用程序,结果在“CPUView”部分显示超过40%的CPU时间花费在Object.wait()上。但是据我所知,Object.wait()CPU没有分配给等待线程。有人可以帮助理解发生了什么以及为什么分析器显示这么多CPU花费在Object.wait()上吗? 最佳答案 探查器不知道CPU在wait()中处于空闲状态。探查器只知道输入了wait(),几毫秒后返回。因此,如果这些毫秒往往会占用您执行时间的40%,那么您就知道了。 关于java-CPU使用率

java - Erlang 比单线程 Java 快之前需要多少个 CPU

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我目前正在使用Java,我在网上阅读了很多关于Erlang的内容,但我有两个大问题:Erlang比简单的Java慢多少(如果有的话)?我在这里假设Java会比shootoutbenchmarks更快。在网上(Erlang做的不太好)。那么,我还需要多少CPU才能使Erlang超越单线程Java(在我的特定情况下,如下所示)?在阅读了一段时间关于Erlang的文章后,我偶然发现了一些评论/帖子,它们说大多数

java - 如何在获得可比性能的同时在 Java8 中进行 monadicaly 编程?

Java8中的monadic编程是否更慢?下面是我的测试(使用右偏Either为每个计算创建新实例)。命令式版本快1000倍。如何在获得可比性能的同时在Java8中进行monadicaly编程?主.javapublicclassMain{publicstaticvoidmain(Stringargs[]){Mainm=newMain();m.work();m.work2();}publicvoidwork(){finallongstart=System.nanoTime();finalEitherresult=Try(this::getInput).flatMap((s)->Try(t

java - Java 是否通过具有单个实现者标记为最终的接口(interface)来优化方法调用?

如果我有一个类的引用并在其上调用一个方法,并且该类或方法是最终的,我的理解是编译器或JVM会用更便宜的静态调度替换动态调度,因为它可以确定将调用哪个版本。但是,如果我有一个接口(interface)的引用,并且该接口(interface)当前只有一个实现者,并且该实现者是最终的或者该实现者中的方法是最终的,JVM可以在运行时计算出来并优化这些吗?电话? 最佳答案 (在此处插入Knuth关于优化的引述。)参见WikisHome>HotSpotInternalsforOpenJDK>PerformanceTechniques.Metho

java - 计算 Java 服务器中 GC 时间的百分比

我正在使用jstat获取GC操作的总累计时间,即GCT所以,假设GCT是2秒,我的JVM进程启动了60秒,我是在四核服务器上运行,所以我的GC百分比是2/60*4=0.83%我上面的计算是否正确? 最佳答案 不,您的计算不准确,因为这样一来,您就不知道操作系统允许您的程序运行的确切时间。假设您想考虑应用程序被GC完全停止的时间(暂停时间),您可以使用以下JVM选项:-XX:+PrintGCApplicationConcurrentTime-XX:+PrintGCApplicationStoppedTime此选项将使JVM将如下内容打

java - 在 mapToInt 之后调用 map 有什么好处吗?

我正在尝试计算列表中值的平方和。以下是三个变体,它们都计算所需的值。我想知道哪一个是最有效的。我期待第三个由于自动装箱仅完成一次,因此效率更高。//sumofsquaresintsum=list.stream().map(x->x*x).reduce((x,y)->x+y).get();System.out.println("sumofsquares:"+sum);sum=list.stream().mapToInt(x->x*x).sum();System.out.println("sumofsquares:"+sum);sum=list.stream().mapToInt(x->x