草庐IT

Performance

全部标签

java - map 查找性能

仅当映射包含给定键时,我才想使用给定键的映射值来做某事。天真地我会写:MapmyMap=...;if(myMap.containsKey(key)){Stringvalue=myMap.get(key);//Dothingswithvalue}上面的代码看起来很容易理解,但是从性能的角度来看,下面的代码不是更好吗?MapmyMap=...;Stringvalue=myMap.get(key);if(value!=null){//Dothingswithvalue}在第二个片段中,我不喜欢value声明的范围更广。相对于Map实现,给定案例的性能如何变化?注意:我们假设map中不允许使用

Java Arraylist 大小声明和性能

考虑以下Java代码(完整、编译和运行良好)。该代码创建了一个包含5,000,000个整数(1到500万)的数组,对其进行循环,并创建一个包含它找到的完美正方形的ArrayList。完美的正方形是使用一种朴素的技术来检测的,而不是位操作,但这不是手头问题的重点。从数学上讲,在1到5M之间,有2236个完全正方形。因此,放入完美正方形的ArrayList的最终大小为2236。importjava.util.ArrayList;publicclassPerfSquares{publicstaticArrayListperfectSquares(int[]arr){ArrayListal=n

java - 静态空数组实例的性能优势

将常量空数组返回值提取到静态常量似乎是常见的做法。喜欢这里:publicclassNoopParserimplementsParser{privatestaticfinalString[]EMPTY_ARRAY=newString[0];@OverridepublicString[]supportedSchemas(){returnEMPTY_ARRAY;}//...}大概这样做是出于性能原因,因为直接返回newString[0]会在每次调用该方法时创建一个新的数组对象——但真的会这样吗?我一直想知道这样做是否真的有可衡量的性能优势,或者这是否只是过时的民间智慧。空数组是不可变的。VM

Java PriorityQueue去除任意元素性能

假设我有一个javaPriorityQueue(java作为堆实现),我迭代它以根据某些条件删除元素:PriorityQueueq=newPriorityQueue();...Iteratorit=q.iterator();while(it.hasNext()){if(someCriterion(it.next()))it.remove();}每个remove()操作需要多长时间?我不确定它是O(log(n))还是O(1)。 最佳答案 如果您使用的是Sun实现,它是O(log(n))。来自Javadocs:Implementatio

java - 将 PNG 加载到 OpenGL 性能问题 - Java 和 JOGL 比 C# 和 Tao.OpenGL 慢得多

我注意到Java和JOGL与C#和Tao.OpenGL在将PNG从存储加载到内存时,以及在加载BufferedImage(java)或位图(C#-两者都是硬盘上的PNG)时存在很大的性能差异'进入'OpenGL。这个差异非常大,所以我假设我做错了什么,但是经过大量搜索和尝试不同的加载技术后,我无法减少这个差异。使用Java,我在248毫秒内加载图像并在728毫秒内加载到OpenGL在C#上,加载图像需要54毫秒,加载/创建纹理需要34毫秒。上面的图片是一个包含透明度的PNG,大小为7200x255,用于2D动画Sprite。我意识到尺寸真的很荒谬,正在考虑切割Sprite,但仍然存在巨

java在运行时动态增加xmx

我的机器上有一个jvm服务器,现在我想让我的2个apservers坐在同一台机器上,但是我希望备用服务器使用xmx分配非常少的内存,因为它是被动的,一个是主要的服务器(Activity)出现故障我想为已经启动的被动服务器分配更多内存而不重新启动它(我让它们都有太多xmx-请注意它们会在启动时消耗内存并且我不能允许内存不足的可能性)。所以我想要被动-低xmx一旦主动下降,我希望我的被动接收更多xmx。有没有办法让我实现这一目标。谢谢 最佳答案 这会很好,但据我所知,这不是Sun提供的JVM的一个选项。Xmx选项是指定最大内存,它的存在

java - JNDI 查找时间的巨大差异

我们在Weblogic10.3上运行的遗留J2EEWeb应用程序的响应时间存在巨大差异。该系统由运行在同一台物理服务器上的两个Weblogic服务器实例(前端和后端)和一个运行在不同主机上的Oracle数据库组成。每当登录系统的时间超过四秒时,外部测量工具就会提醒我们。最近这些警告频繁出现。查看处理登录请求的servlet写入的日志,可以发现时间花在了从前端到后端的EJB调用上。测量时间示例:timems8:40:43258:42:14268:44:04268:44:25268:44:47268:46:06268:46:4177448:47:00278:47:37278:49:0026

Performance Improvements in .NET 8 & 7 & 6 -- String【翻译】

原文:https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/#strings-arrays-and-spans.Net8.NET8在数据处理领域有了巨大的改进,特别是在有效操作字符串,数组和Span方面。既然我们刚刚谈到了UTF8和IUtf8SpanFormattable,那就从这里开始。UTF8如前所述,现在有很多类型实现了IUtf8SpanFormattable。我注意到所有的数值原始类型,DateTime{Offset},和Guid,以及dotnet/runtime#84556,System.Ver

java - 避免在 Java CMS GC 中升级失败

我有一个使用CMS垃圾收集的Java应用程序,它每天都会遭受几次“ParNew(提升失败)”完整GC(请参见下面的示例)。我知道当垃圾收集无法在老一代中找到足够的(连续的)空间来将新一代对象提升到其中时,就会发生提升失败。在这一点上,它被迫进行昂贵的stop-the-worldfullGC。我想避免此类事件。我已经阅读了几篇建议可能的解决方案的文章,但我想在这里澄清/巩固它们:-Xmx:增加堆大小,例如。从2G到4G——为老一代提供更多余量的简单解决方案——根据我的经验,似乎工作得相当好-XX:NewRatio:增加NewRatio,例如。从2到4,为了增加老一代/减少新一代——给老一

java - Java/Scala 中的高性能字符串哈希函数

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭去年。Improvethisquestion在Java/Scala中寻找高性能字符串散列函数-比MurmurHash家族的函数更快的东西,不需要加密强度高,只需要分布良好。有什么建议吗?