Questions tagged «performance»

对于与代码的度量或改进以及应用程序效率有关的问题。


25
Java HashMap性能优化/替代
我想创建一个大型HashMap,但put()性能不够好。有任何想法吗? 欢迎其他数据结构建议,但我需要Java Map的查找功能: map.get(key) 就我而言,我想创建一个包含2600万个条目的地图。使用标准的Java HashMap,插入2到3百万次后,放置速度会变得异常缓慢。 另外,有人知道对密钥使用不同的哈希码分布是否有帮助? 我的哈希码方法: byte[] a = new byte[2]; byte[] b = new byte[3]; ... public int hashCode() { int hash = 503; hash = hash * 5381 + (a[0] + a[1]); hash = hash * 5381 + (b[0] + b[1] + b[2]); return hash; } …

9
用Java比较两个集合的最快方法是什么?
我正在尝试优化一段比较列表元素的代码。 例如。 public void compare(Set<Record> firstSet, Set<Record> secondSet){ for(Record firstRecord : firstSet){ for(Record secondRecord : secondSet){ // comparing logic } } } 请考虑到记录集中的记录数量会很高。 谢谢 舍哈尔
102 java  performance  set 

8
C#是操作员的绩效
我有一个需要快速性能的程序。在其内部循环之一中,我需要测试对象的类型,以查看其是否从某个接口继承。 一种方法是使用CLR的内置类型检查功能。最优雅的方法可能是'is'关键字: if (obj is ISpecialType) 另一种方法是为基类提供我自己的虚拟GetType()函数,该函数返回预定义的枚举值(在我的情况下,实际上,我只需要一个布尔值)。该方法将很快,但不太优雅。 我听说有一个专门针对'is'关键字的IL指令,但这并不意味着它在转换为本地程序集时执行速度很快。谁能对“是”与其他方法的性能分享一些见解? 更新: 感谢您提供所有明智的答案!答案中似乎有几个有用的观点:安德鲁(Andrew)关于“是否”自动执行演员表的观点是必不可少的,但Binary Worrier和Ian收集的性能数据也非常有用。如果对其中一个答案进行编辑以包括所有这些信息,那就太好了。
102 c#  performance  clr  gettype 

3
在jQuery中选择后代元素的最快方法是什么?
据我所知,有许多方法可以选择jQuery中的子元素。 //Store parent in a variable var $parent = $("#parent"); 方法1 (通过使用范围) $(".child", $parent).show(); 方法2 (find()方法) $parent.find(".child").show(); 方法3 (仅对于直系儿童) $parent.children(".child").show(); 方法4 (通过CSS选择器) -@spinon建议 $("#parent > .child").show(); 方法5 (与方法2相同) -根据@Kai $("#parent .child").show(); 我不熟悉能够自己进行调查的配置文件,因此,我很想看看您必须说些什么。 附言:我知道这可能是这个问题的重复,但并未涵盖所有方法。

8
Java编译速度与Scala编译速度
我已经在Scala中编程了一段时间了,我喜欢它,但是令我烦恼的是编译程序所花费的时间。这似乎是一件小事,但是使用Java我可以对程序进行一些小的更改,单击netbeans中的运行按钮,然后BOOM就会运行,随着时间的推移,在scala中进行编译似乎会花费大量时间。我听说在许多大型项目中,脚本编写语言变得非常重要,因为需要花费大量的编译时间,而使用Java时却没有看到这种需求。 但是我来自Java,据我了解,它比任何其他编译语言都快,并且由于我改用Scala的原因而变得更快(这是一种非常简单的语言)。 所以我想问一下,我可以使Scala编译速度更快,并且scalac会和javac一样快。

14
在循环中重用StringBuilder更好吗?
我有一个有关使用StringBuilder的性能相关问题。在一个很长的循环中,我正在操纵a StringBuilder并将其传递给另一个这样的方法: for (loop condition) { StringBuilder sb = new StringBuilder(); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); } StringBuilder在每个循环周期实例化是一个好的解决方案吗?而且像下面这样,调用delete会更好吗? StringBuilder sb = new StringBuilder(); for (loop condition) { sb.delete(0, sb.length); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); }


5
与C ++中的普通指针相比,智能指针的开销是多少?
与C ++ 11中的普通指针相比,智能指针的开销是多少?换句话说,如果我使用智能指针,我的代码会变慢吗?如果这样,速度会慢多少? 具体来说,我在问C ++ 11 std::shared_ptr和std::unique_ptr。 显然,被压入堆栈的东西会更大(至少我认为是这样),因为智能指针还需要存储其内部状态(引用计数等),所以问题的实质是,这将要花费多少呢?会影响我的表现吗? 例如,我从函数而不是普通指针返回智能指针: std::shared_ptr<const Value> getValue(); // versus const Value *getValue(); 或者,例如,当我的函数之一接受智能指针作为参数而不是普通指针时: void setValue(std::shared_ptr<const Value> val); // versus void setValue(const Value *val);

3
PHPStorm IDE中效率低下的jQuery使用警告
我最近升级了我的PHPStorm IDE版本,现在它警告我有关jQuery使用效率低下的问题。 例如: var property_single_location = $("#property [data-role='content'] .container"); 提示此警告: 检查是否有效使用了jQuery选择器。它建议拆分以ID选择器开头的子代选择器,并警告可能被缓存的重复选择器。 所以我的问题是: 为什么这种效率低下?执行上述选择器的有效方法是什么? 我猜在: var property_single_location = $("#property").find("[data-role='content']").find(".container"); 这是正确的方法吗?


10
Java和C / C ++之间最快的(低延迟)进程间通信方法
我有一个Java应用程序,通过TCP套接字连接到用C / C ++开发的“服务器”。 应用程序和服务器都在同一台计算机上运行,​​这是一个Solaris机器(但我们最终正在考虑迁移到Linux)。交换的数据类型是简单的消息(登录,登录ACK,然后客户端要求某些内容,服务器答复)。每个消息大约300字节长。 当前,我们正在使用套接字,并且一切都很好,但是我正在寻找使用IPC方法交换数据(更快的延迟)的更快方法。 我一直在研究网络,并提出了以下技术的参考: 共享内存 管道 s列 以及所谓的DMA(直接内存访问) 但是我找不到对它们各自性能的正确分析,也找不到如何在JAVA和C / C ++中实现它们(以便它们可以相互通信)的方法,但也许我可以想象如何做。 在这种情况下,任何人都可以评论每种方法的性能和可行性吗?任何指向有用的实现信息的指针/链接? 编辑/更新 在我到达这里的评论和答案之后,我找到了有关Unix Domain Sockets的信息,该信息似乎是通过管道构建的,将为我节省整个TCP堆栈。它是特定于平台的,因此我计划使用JNI或juds或junixsocket对其进行测试。 下一个可能的步骤是直接实现管道,然后实现共享内存,尽管我已经被警告过额外的复杂性... 谢谢你的帮助
100 java  c++  performance  ipc  latency 

4
为什么我的基本Heroku应用程序需要两秒钟才能加载?
我创建了两个非常简单的Heroku应用程序来测试该服务,但是当我第一次访问它们时,通常需要花费几秒钟来加载页面: Cropify-基本Sinatra应用程序(在github上) Textile2HTML-更基本的Sinatra应用程序(在github上) 我所做的就是创建一个简单的Sinatra应用程序并进行部署。我没有做任何事情来弄乱或测试Heroku服务器。我该如何改善响应时间?现在非常慢,我不确定从哪里开始。如果有帮助,这些项目的代码位于github上。
100 ruby  performance  heroku 

3
为什么LINQ JOIN比链接到WHERE这么快?
我最近升级到了VS 2010,并且正在使用LINQ到Dataset。我在ASP.NET WebApplication的HttpCache中有一个用于授权的强类型数据集。 所以我想知道检查用户是否有权做某事的最快方法是什么。如果有人感兴趣,这是我的数据模型和其他一些信息。 我检查了3种方法: 直接数据库 LINQ查询,其中条件为“加入”-语法 带Join的 LINQ查询-语法 这些是每个函数进行1000次调用后的结果: 1.迭代 4,2841519秒 115,7796925秒 2,024749秒 2.迭代 3,1954857秒 84,97047秒 1,5783397秒 3,迭代 2,7922143秒 97,8713267秒。 1,8432163秒 平均: 数据库:3,4239506333秒 其中:99,5404964秒。 加入:1,815435秒。 为什么Join版本比where语法快得多,这使得它变得毫无用处,尽管作为LINQ新手,它似乎最清晰。还是我错过了查询中的内容? 这是LINQ查询,我跳过数据库: 哪里: Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid) Dim query = From accRule In …

5
当else做得最多时,最有效的方式来执行if-elif-elif-else语句?
我有一条if-elif-elif-else语句,其中99%的时间执行else语句: if something == 'this': doThis() elif something == 'that': doThat() elif something == 'there': doThere() else: doThisMostOfTheTime() 这个构造完成了很多,但是由于它在碰到其他情况之前会遍历所有条件,所以我觉得这不是很有效,更不用说Pythonic了。另一方面,它确实需要知道是否满足任何这些条件,因此无论如何都应该对其进行测试。 是否有人知道是否以及如何可以更有效地完成此工作,或者这仅仅是做到这一点的最佳方法?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.