草庐IT

Performance

全部标签

java - 通用 Guice 性能指南

我目前有一个命令行工具,它大量使用了Guice及其扩展。完成该工具的功能后,我确定性能不合标准,并开始使用简单的hprof进行分析。这已经指出,仅仅创建Injector是一个重大的性能问题。我通常避免在模块中做任何实际工作,并为提供者保留计算密集型工作......鉴于此,Guice的一般性能指南是什么?我应该避免使用@AssistedInject和FactoryModuleBuilders吗?尽可能避免@Singletons?确保所有绑定(bind)都是显式的并避免JIT绑定(bind)?我到处搜索,但除了有人说它真的很快之外,我找不到太多关于基本Guice性能的内容。

Java List size() 性能和技巧

这个问题在这里已经有了答案:Java-Differencebetweenforloopterminatingexpression(6个答案)关闭8年前。我想知道.size()的性能方法。此方法是否从列表中的对象数返回引用(就像每次将对象添加到列表时递增的类成员)?还是遍历所有对象?哪个更有效率?调用.size()每次:Listobjects=getCoords();for(intx=0;x或者通过保存到局部变量:Listobjects=getCoords();intsize=objects.size();for(intx=0;x假设列表中有>30.000个对象。哪个更快/更高效?如果我

java - System.getCurrentTimeMillis() 的性能开销

我正在制作一种概率模拟器,它将运行一定的时间或一定的重复次数。我想优化一下,目前是多线程的,每个ProbabilityWorker扩展Thread,主程序会自动分配n个线程,其中n是但是有很多线程可用(例如:在我的Corei3-7100U上,这是4)。我正在分析它的性能,我意识到我用来获取相对于结束时间的当前时间的方法会导致大量开销。对于它可以“运行一定时间”的模式,我将newDate对象作为循环条件的一部分,然后我将其更改为更快的System.currentTimeMillis()试图节省时间,但我注意到即使这样也会产生开销。我的run函数如下所示:publicvoidrun(){i

java - 减少来自 Java Lambda 的 DynamoDB 延迟

如何减少我目前在Lambda和DynamoDB之间看到的延迟?这是一个Javalambda,使用AWS提供的SDK执行2个DynamoDB操作中的每一个操作需要4秒。我听说这些通常在完全空的表执行表扫描(下面的代码)。我应该怎么做才能减少延迟?我尝试过的事情lambda和DynamoDB都在同一区域(eu-west-1)。该表有5个RCU和WCU。增加这些没有帮助。lambda使用的最大内存为92MB。如果我分配最小128MB,则它会在15秒后超时。将内存增加到512MB可以实现每次调用4s的时间,再次增加到1GB可以将每次调用减少到2s。然而,对于一个普通的lambda表达式来说,这

java - 是否有更有效的方法来评估字符串的包含?

我必须执行这行cose几百万次,我想知道是否有优化它的方法(也许预先计算一些东西?)。a.contains(b)||b.包含(a)谢谢编辑:contains方法执行的代码已经检查了a.lengthpublicstaticintindexOf(byte[]value,intvalueCount,byte[]str,intstrCount,intfromIndex){bytefirst=str[0];intmax=(valueCount-strCount);for(inti=fromIndex;i 最佳答案 据我了解任务,你必须检查是否

java - Hibernate:遍历数百万行并且不泄漏内存

下面的代码起作用了,但是Hibernate永远不会放弃它对任何对象的控制。调用session.clear()会导致有关获取连接类的异常,并且在检索下一个对象之前调用session.evict(currentObject)也无法释放内存。最终我耗尽了堆空间。检查我的堆转储,StatefulPersistenceContext是指向我的对象的所有引用的垃圾收集器的根。publicclassCriteriaReportSourceimplementsJRDataSource{privateScrollableResultssr;privateObjectcurrentObject;priva

java - JSF——替代 "rendered="?

我们正在开发一个Java网络应用程序,该应用程序将JSF(通过Seam的Richfaces)用于其UI。我读过几篇文章,指出在UI组件上使用“rendered=”属性会导致相当大的性能损失。我们有几个组件,我们希望根据是否设置它们的值来启用或禁用它们。例如,如果我们要展示待售商品,我们不会为未设置的属性设置一堆空白字段。然而,考虑到这种性能影响,我们对使用多个“渲染”字段感到担忧。有更好的替代方案吗?我们可以做些什么来提高使用该字段的性能? 最佳答案 如果getter除了返回一个(缓存的)boolean属性之外什么都不做,那么我真的

java - 在 Java 中绘制像素最快的方法是什么

我有一些代码可以在随机位置生成粒子,并以随机方向和速度移动。通过循环的每次迭代,我移动所有粒子,并在我的jpanel上调用重绘。对于1,000个粒子,我每秒获得大约20到30帧。我计划最终拥有100,000到1,000,000个粒子。在paint中,如果窗口大小发生变化,我只会创建一个新的bufferedimage。我将像素绘制到bufferedimage,然后调用drawImage来显示图像。每个粒子都是一个像素,我确定所有时间都花在了实际绘制像素上。因此,增加粒子数量将大大降低帧速率。我试过g.drawline(x,y,x+1,y)、img.setRGB(x,y,color),通过

java - 生成随机数组 int[] 时性能更好

我正在为campare排序算法编写程序。我正在使用大量数字。我在创建充满随机数的数组时遇到了性能问题。有什么方法可以让它更快吗?目前我正在使用:int[]temp=newint[length];for(inti=0;i在哪里generator=newRandom(); 最佳答案 如果你想要更快,你可以自己写一个随机数生成器,随机性较低但速度更快。不幸的是,这是C代码,但您可以翻译成Java:取自http://en.wikipedia.org/wiki/Random_number_generation对于您的应用程序,这就足够了。对于

Java 垃圾收集引起的延迟影响性能

我注意到我的应用程序中有一个奇怪的现象。在将对象提交到服务器后,我将对象存储在Hashmap中,并在响应到达时将其删除。我最近注意到运行后性能非常慢。查看后发现内存占用一直在4GB,然后下降到不到1GB。我怀疑它正在清理大量对象,这就是性能变得如此糟糕的原因。所以问题是为什么Java这么晚才进行垃圾收集?也就是说,为什么要等到Heap满了再进行Garbagecollection呢?它不应该定期收集垃圾吗。存储在HashMap中的对象是在那个时候创建​​的,也就是说它们不会长期存在。这是在Linux(RHEL)、OracleJVMHotSpot7上运行的。64位。4个核心。这是应用程序的