Questions tagged «performance»

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

9
为什么字符串连接比数组连接快?
今天,我阅读了有关线程串联速度的主题。 令人惊讶的是,字符串连接是赢家: http://jsben.ch/#/OJ3vo 结果与我的想法相反。此外,与此有关的文章很多,都与此相反。 我可以猜测浏览器已针对concat最新版本进行了优化,但是如何做到这一点呢?我们可以说+串联字符串时最好使用吗? 更新资料 因此,在现代浏览器中,对字符串串联进行了优化,因此使用+符号比join要串联字符串时使用符号要快。 但是@Arthur指出,join如果您实际上想使用分隔符连接字符串,则速度会更快。 更新-2020 Chrome:数组join几乎2 times faster是String concat + 参见:https : //stackoverflow.com/a/54970240/984471 注意: join如果有的话,数组更好large strings 如果我们需要several small strings在最终输出中生成,最好使用字符串concat +,否则使用Array会在末尾需要几次Array到String的转换,这会导致性能超载。



4
对事件处理程序使用lambda表达式
我目前有一个页面,其声明如下: public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //snip MyButton.Click += (o, i) => { //snip } } } 我最近才从1.1迁移到.NET 3.5,因此我习惯于在Page_Load之外编写事件处理程序。我的问题是;为此使用lambda方法时,应该注意什么性能缺陷或陷阱吗?我更喜欢它,因为它肯定更简洁,但是我不想牺牲性能来使用它。谢谢。
114 c#  performance  events  lambda 

3
为什么在MongoDB中索引的方向很重要?
引用文档: 创建索引时,与键关联的数字指定索引的方向,因此它应始终为1(升序)或-1(降序)。方向对于单个键索引或随机访问检索都无关紧要,但是如果您要对复合索引进行排序或范围查询,则方向很重要。 但是,我认为没有理由将索引的方向放在复合索引上。有人可以提供进一步的解释(或示例)吗?

8
哈希表真的可以是O(1)吗?
哈希表可以实现O(1)似乎是常识,但是这对我来说从来没有任何意义。有人可以解释一下吗?这是两种情况: 答: 该值是一个小于哈希表大小的整数。因此,该值是其自己的哈希,因此没有哈希表。但是,如果有的话,它将是O(1),但效率仍然很低。 B. 您必须计算值的哈希值。在这种情况下,对于要查找的数据大小,顺序为O(n)。在您完成O(n)工作后,查找可能是O(1),但在我眼里仍然是O(n)。 而且,除非您拥有完美的哈希表或大型哈希表,否则每个存储桶中可能有几项。因此,无论如何它会演变成小的线性搜索。 我认为哈希表很棒,但除非得到理论上的支持,否则我不会获得O(1)的名称。 Wikipedia的有关哈希表的文章始终引用恒定的查找时间,并且完全忽略了哈希函数的成本。这真的是公平的措施吗? 编辑:总结一下我学到的东西: 从技术上讲,这是正确的,因为不需要散列函数使用键中的所有信息,因此可以是恒定时间,并且因为足够大的表可以使冲突降低到接近恒定时间。 在实践中确实如此,因为随着时间的推移,只要选择哈希函数和表大小以最大程度地减少冲突,就可以解决问题,尽管这通常意味着不使用恒定时间哈希函数。

10
加快Spring Boot的启动时间
我有一个Spring Boot应用程序。我添加了很多依赖项(不幸的是,看起来我需要所有这些依赖项),并且启动时间增加了很多。仅需SpringApplication.run(source, args)花费10秒钟。 尽管这与“使用”相比可能不算什么,但我不愿意花那么多钱,主要是因为它破坏了开发流程。此时应用程序本身很小,因此我认为大多数时间与添加的依赖项有关,而不是与应用程序类本身有关。 我认为问题是类路径扫描,但是我不确定如何: 确认这是问题所在(即如何“调试” Spring Boot) 如果确实是原因,我该如何加以限制,以使其更快?例如,如果我知道某个依赖项或程序包不包含Spring应该扫描的任何内容,是否有办法限制它? 我认为增强Spring在启动期间具有并行bean初始化会加快速度,但是该增强请求自2011年以来一直没有任何进展。我在Spring Boot本身中看到了其他一些工作,例如调查Tomcat JarScanning的速度改进,但这是特定于Tomcat的,已被放弃。 本文: http://www.nurkiewicz.com/2010/12/speeding-up-spring-integration-tests.html 尽管针对集成测试,建议使用lazy-init=true,但是我不知道如何使用Java配置将此应用于Spring Boot中的所有bean-这里有没有指针? 任何(其他)建议都将受到欢迎。


4
MySQL中有两个单列索引还是一个两个列索引?
我面临以下问题,我不确定什么是最佳实践。 考虑下表(该表会变大): id PK | Giver_id FK | FK | 日期 我正在使用InnoDB,据我了解,它会自动为两个外键列创建索引。但是,在需要匹配以下特定组合的情况下,我还会做很多查询: SELECT...WHERE giver_id = x AND recipient_id = t。 每个这样的组合在表中将是唯一的。 在这些列上添加双列索引有什么好处,还是理论上两个单独的索引足够/相同?




6
将Java对象设置为null是否会做任何事情?
我在浏览一些旧书时,发现了彼得·哈格(Peter Hagger)的“ Practical Java”的副本。在性能部分,建议null不再使用对象引用。 在Java中,设置对象引用是否可以null提高性能或垃圾回收效率?如果是这样,在什么情况下会出现问题?容器类?对象组成?匿名内部类? 我经常在代码中看到这一点。现在这是过时的编程建议还是仍然有用?

10
MySQL表中varchar长度的重要性
我有一个MySQL表,其中动态插入行。因为我不能确定字符串的长度,也不希望它们被截断,所以我将它们设为varchar(200),通常比我需要的大得多。给varchar字段提供比所需长度更长的长度是否会对性能产生重大影响?
112 sql  mysql  performance  types 

3
如何为CUDA内核选择网格和块尺寸?
这是关于如何确定CUDA网格,块和线程大小的问题。这是在此处发布的问题的另一个问题。 在此链接之后,来自爪子的答案包含一个代码段(请参见下文)。我不理解“通常是通过调整和硬件限制选择的值”的注释。 我在CUDA文档中找不到很好的解释或说明来解释这一点。总而言之,我的问题是blocksize给定以下代码,如何确定最佳(线程数): const int n = 128 * 1024; int blocksize = 512; // value usually chosen by tuning and hardware constraints int nblocks = n / nthreads; // value determine by block size and total work madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);

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.