Tag: 性能

Java中的Integer()有多大?

Integer()有多大? 我问因为下面发生的事情。 在尝试将10 ^ 6个整数(在[0,10 ^ 6)中)放入双端队列后,我的堆内存耗尽。 该实现使用双向链表并显示为 Deque implements Iterable { } 但是当使用Strings时,我能够完成而不必增加堆的大小: String hw = “Hello, world.”; for (i=0;i<10**6;i++) { myDq.addToEnd(hw); }

如何使用LinkedHashMap获取子图?

目前,我正在使用TreeMap来存储一些x和y坐标,但与ArrayList或HashMap相比,迭代速度非常慢。 我正在使用它,因为我需要subMap()方法,因此即使精确的X值(键)不存在,我也可以在确定的范围内获得X值。 LinkedHashMap与HashMap速度几乎相同,我可以按照插入顺序迭代键(我需要插入顺序或比较顺序,因为它在TreeMap中完成)但我没有submap()方法。 在TreeMap中,我可以非常快速地生成子图。 是否存在任何数据结构或某种方式来存储有序值(通过插入顺序或比较器)比TreeMap更快,即使精确值不在地图中,也允许获取范围内的子图? 我的意思是,也许我想要2到25之间的值,但2不存在,最近的是3,所以它将从3到25返回一个子图。或者某种方式将此function添加到LinkedHashMap ?

优秀Java VM中方法调用的开销是多少?

有人能想出一个反汇编的机器码汇编列表吗? 我的意思是与C中的普通函数调用相比,必须有一些开销。 VM需要跟踪调用以查找热点,当它使用已编译的代码时,如果新加载的类需要重新编译,则需要提供更改已编译方法的方法。 我想在某处还有一个返回堆栈溢出检查。 编辑:我想我应该提一下,我不是一个java程序员,而是一个编译器编写器,想要找出为什么java应用程序如此缓慢而java微基准测试与本机编译代码相当。 因此,在这里查看一些细节对我来说很重要,即使他们只需要几个几纳秒和一些额外的指令。

Java性能String.indexOf(char)vs String.indexOf(单个字符串)

我认为当使用单个字符和单个字符串(例如,’x’和“x”)时, String.indexOf(char)比String.indexOf(String)快一点 为了确保我的猜测,我编写了如下的简单测试代码。 public static void main(String[] args) { IndexOfTest test = new IndexOfTest(Integer.parseInt(args[0])); test.run(); } public IndexOfTest(int loop) { this.loop = loop; } public void run() { long start, end; start = System.currentTimeMillis(); for(int i = 0 ; i < loop ; i++) { alphabet.indexOf("x"); } end = System.currentTimeMillis(); System.out.println("indexOf(String) : " + (end […]

在Spring MVC中,从哪里开始和结束计数器来测试速度执行时间?

我想知道一个特定页面渲染需要多长时间,Spring MVC框架中的各个部分可以启动和停止我的计时器? 顺便说一下,我应该使用什么java类来获得最准确的时间(以毫秒为单位)?

使用静态私有方法真的比实例私有方法更快/更好吗?

我要问的是这样做是否有区别: public Something importantBlMethod(SomethingElse arg) { if (convenienceCheckMethod(arg)) { // do important BL stuff } } private boolean convenienceCheckMethod(SomethingElse arg) { // validate something } 和这个: public Something importantBlMethod(SomethingElse arg) { if (convenienceCheckMethod(arg)) { // do important BL stuff } } private static boolean convenienceCheckMethod(SomethingElse arg) { // validate something } 我实际上使用选项1,因为它对我来说似乎更自然。 那么第一种和第二种方式之间是否有样式/约定/性能差异? 谢谢, 正如我在测试中所建议的那样,在我的基准测试中,动态方法更快。 […]

性能:浮动到int转换和剪切结果到范围

我正在使用float进行一些音频处理。 结果需要转换回PCM样本,我注意到从float到int的转换是非常昂贵的。 更令人沮丧的是,我需要将结果剪辑到一个短的范围(-32768到32767)。 虽然我通常会明确地假设这可以通过简单地将float转换为short来确保,但这在Java中失败,因为在字节码级别它导致F2I后跟I2S。 而不是一个简单的: int sample = (short) flotVal; 我需要诉诸这个丑陋的序列: int sample = (int) floatVal; if (sample > 32767) { sample = 32767; } else if (sample < -32768) { sample = -32768; } 有更快的方法吗? (约占总运行时间的6%似乎用于铸造,而6%似乎乍看起来并不那么多,当我认为处理部分涉及大量矩阵乘法和IDCT时,它令人震惊) 编辑上面的强制转换/剪辑代码(不出意料地)在循环体中,它从float []中读取浮点值并将它们放入byte []中。 我有一个测试套件,可以测量几个测试用例的总运行时间(处理大约200MB的原始音频数据)。 当通过将循环索引分配给样本来替换强制转换“int sample =(int)floatVal”时,6%是从运行时差异中得出的。 编辑@leopoldkot:我知道Java中的截断,如原始问题(F2I,I2S字节码序列)中所述。 我只是简单地尝试了强制转换,因为我认为Java有一个F2S字节码,但遗憾的是它没有(最初来自68K汇编背景,其中一个简单的“fmove.w FP0,D0”就完全按照我想要的方式完成) 。

Jython webapp性能

我目前正在构建一个Jython Web应用程序,但我担心Jython应用程序的性能。 我感到很欣慰的是,我可以在一个单独的Java jar中编写任何计算密集型任务,并从Jython调用它们。 有没有人在这样做时遇到问题,或者对这样的设置有问题?

我可以使用Timer对象使程序饱和吗?

我有一个程序,我计划使用很多Timer对象,据我所知,每个Timer都运行在它自己的线程上。 所以我想知道是否有可能启动这么多的计时器,它会伤害程序的性能太multithreading。 例如,我想有几个(布尔,计时器)对可以在几个不同的时间间隔反转布尔值。

什么是每行读取线路的最快方式

我有一个巨大的文件与字符串。 所有行都应该添加到我的代码中的List中。 什么是最快的方式? 我发现了这个,但我不知道如何使用它来读取每行的行数。