Questions tagged «performance»

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

8
遍历字符串中所有字符的最快方法
在Java中,迭代字符串中所有字符的最快方法是: String str = "a really, really long string"; for (int i = 0, n = str.length(); i < n; i++) { char c = str.charAt(i); } 或这个: char[] chars = str.toCharArray(); for (int i = 0, n = chars.length; i < n; i++) { char c = chars[i]; } …


4
连接JavaScript中字符串的最有效方法?
在JavaScript中,我有一个包含许多迭代的循环,并且在每个迭代中,我正在创建一个包含许多+=运算符的巨大字符串。有没有更有效的方式来创建字符串?我正在考虑创建一个动态数组,在该数组中不断向其中添加字符串,然后进行联接。谁能解释并举例说明最快的方法?

13
jQuery hasClass()-检查多个类
带有: if(element.hasClass("class")) 我可以检查一个类,但是有没有一种简单的方法可以检查“元素”是否具有多个类呢? 我在用: if(element.hasClass("class") || element.hasClass("class") ... ) 这还不错,但是我在想类似的东西: if(element.hasClass("class", "class2") 不幸的是,这不起作用。 有那样的东西吗?

4
SQL,Postgres OID,它们是什么,为什么有用?
我正在查看一些PostgreSQL表的创建,但我偶然发现了这一点: CREATE TABLE ( ... ) WITH ( OIDS = FALSE ); 我阅读了postgres提供的文档,并且了解了OOP中的对象标识符的概念,但仍然不了解, 为什么这样的标识符在数据库中会有用? 使查询更短? 什么时候应该使用?

12
是String.Format和StringBuilder一样有效
假设我在C#中有一个stringbuilder可以做到这一点: StringBuilder sb = new StringBuilder(); string cat = "cat"; sb.Append("the ").Append(cat).(" in the hat"); string s = sb.ToString(); 是否会比拥有以下产品效率更高或更有效? string cat = "cat"; string s = String.Format("The {0} in the hat", cat); 如果是这样,为什么? 编辑 经过一些有趣的回答后,我意识到我可能应该对自己的询问更加清楚。我并不是在问哪个连接字符串更快,但是哪个将一个字符串注入另一个更快。 在以上两种情况下,我都希望将一个或多个字符串注入到预定义模板字符串的中间。 对困惑感到抱歉

8
Scala vs Java,性能和内存?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我热衷于研究Scala,并提出了一个似乎无法找到答案的基本问题:一般来说,Scala和Java在性能和内存使用方面是否有所不同?

6
为什么嵌套权重对性能不利?备择方案?
我编写了几个布局文件,在其中我使用该layout_weight属性在不同视图之间创建比率。 在某个时候,我开始收到有关嵌套权重的棉绒警告。 因此,我想知道为什么嵌套权重对性能不利,并且是否存在一种更有效的方法来在视图尺寸之间创建恒定比率,该比例可用于不同的屏幕尺寸,而无需指定很多尺寸dpi值在几个布局文件中(对于不同的屏幕尺寸,我是说)。 谢谢!

15
如何编写一个最能充分利用CPU缓存来提高性能的代码?
这听起来像是一个主观的问题,但是我正在寻找的是与之相关的特定实例。 如何使代码有效,缓存有效/缓存友好(缓存命中率越高,缓存未命中越少)?从两种角度来看,数据高速缓存和程序高速缓存(指令高速缓存),即代码中与数据结构和代码结构有关的东西,都应该使高速缓存有效。 是否存在必须使用/避免的任何特定数据结构,或者是否存在访问该结构的成员的特定方法等,以使代码缓存有效。 是否有任何程序构造(如果,用于,切换,中断,转到,...),代码流(用于if,如果位于for等内部……)在此问题上应该遵循/避免使用? 我期待听到与一般而言使高速缓存高效代码有关的个人经验。它可以是任何编程语言(C,C ++,Assembly等),任何硬件目标(ARM,Intel,PowerPC等),任何OS(Windows,Linux,Symbian等)。 。 多样性将有助于更好地深入了解它。

14
子查询与联接
我重构了我们从另一家公司继承来的应用程序的缓慢部分,以使用内部联接而不是子查询,例如: WHERE id IN (SELECT id FROM ...) 重构查询的运行速度提高了约100倍。(约50秒,约0.3秒),我期望有所改善,但是谁能解释为什么如此剧烈?where子句中使用的列均已建立索引。SQL是否在where子句中每行执行一次查询? 更新 -说明结果: 区别在于“(())中的id”查询的第二部分- 2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where vs 1带有连接的索引行: SIMPLE s eq_ref PRIMARY PRIMARY 4 newsladder_production.st.submission_id 1 Using index

8
检查属性是否具有属性
给定类中具有属性的属性-确定它是否包含给定属性的最快方法是什么?例如: [IsNotNullable] [IsPK] [IsIdentity] [SequenceNameAttribute("Id")] public Int32 Id { get { return _Id; } set { _Id = value; } } 确定其具有“ IsIdentity”属性的最快方法是什么?
158 c#  performance 


6
TeamViewer有多快?
抱歉,长度太长了。 介绍 我正在Windows Vista / 7的C#4.0中开发远程桌面软件(只是为了好玩)。我已经克服了一些基本的障碍:我拥有一个健壮的UDP消息传递系统,相对简洁的程序设计,一个镜像驱动程序(DemoForge提供的免费DFMirage镜像驱动程序)已启动并正在运行,并且我已为所有实现了NAT遍历对称NAT除外的NAT类型(存在于公司防火墙中)。 关于屏幕传输/共享,由于有了镜像驱动程序,我会自动收到有关更改的屏幕区域的通知,并且可以简单地将镜像驱动程序的不断变化的屏幕位图编组到自己的位图。然后,我将屏幕区域压缩为PNG并将其从服务器发送到我的客户端。事情看起来还不错,但是还不够快。它和VNC一样慢(顺便说一句,我不使用VNC协议,只是一个自定义的业余协议)。 从最慢的远程桌面软件到最快的远程桌面软件,该列表通常从所有类似VNC的实现开始,然后攀升至Microsoft Windows Remote Desktop ...然后是... TeamViewer。对于CrossLoop和LogMeIn不太清楚-我没有使用过它们,但是TeamViewer的速度非常快。从字面上看,它是真实的。我tree在命令提示符下运行了一条命令,并以20毫秒的延迟进行了更新。我可以比笔记本电脑慢几毫秒来浏览网页。在Visual Studio中垂直滚动代码的延迟时间为50毫秒。考虑一下要完成所有这些工作,TeamViewer的屏幕传输解决方案必须多么强大。 VNC使用基于轮询的挂钩来检测屏幕变化,并在最坏的情况下进行暴力屏幕捕获/比较。在最佳状态下,他们使用DFMirage之类的镜像驱动程序。我在这个水平上。他们使用了称为RFB协议的协议。 Microsoft Windows远程桌面显然比VNC高出了一步。我从StackOverflow上的某个地方听到,Windows远程桌面不会发送屏幕位图,而是发送实际的绘图命令。这非常出色,因为它可以发送简单的文本(在此坐标处绘制此矩形并使用此渐变为其着色)!远程桌面确实非常快-这是在家中工作的标准方式。它使用了一种称为RDP协议的东西。 现在,TeamViewer对我来说是一个完全的谜。显然,他们发布了版本2的源代码(TeamViewer是2012年2月的版本7)。人们已经读过它,并说版本2没有用-它只是对具有自动NAT遍历的VNC的一些改进。 但是版本7 ...现在快得离谱了。我的意思是,它实际上比Windows Remote Desktop快。我已经使用TeamViewer流式传输DirectX 3D游戏(速度为1 fps,但Windows远程桌面甚至不允许DirectX运行)。 顺便说一句,TeamViewer 无需镜像驱动程序即可完成所有这些操作。可以选择安装一个,但速度会更快一点。 问题 我的问题是,TeamViewer怎么这么快?一定不可能。如果您即使在24位深度(16位深度也很丑陋)下都具有1920 x 1080分辨率,那仍然是6,220,800字节原始数据。即使使用libjpeg-turbo(大型公司使用的最快的JPG压缩库之一)将其压缩到30KB(让我们非常慷慨),也需要花费一些时间才能通过TeamViewer的服务器进行路由(TeamViewer通过简单地代理流量来绕过公司的对称NAT)他们的服务器)。而libjpeg-turbo压缩将需要时间来压缩。对于我来说,高质量的JPG压缩需要175毫秒才能完成1920 x 1080的完整屏幕截图。如果主机计算机运行Atom处理器,则该数字将增加。我只是不了解TeamViewer如何如此出色地优化了屏幕传输。同样,小尺寸图像可能会被高度压缩,但至少要花费数十毫秒的压缩时间。大型图像无需花费时间即可压缩,但需要很长时间才能通过。不知何故,TeamViewer完成了整个过程,每秒获得大约20-25帧。我使用了网络监视器,TeamViewer在500 Kbps和1 Mbps的速度下仍然没有滞后(在该传输速率下,VNC软件滞后了几秒钟)。在我的tree在命令提示符测试中,TeamViewer接收入站数据的速率为1 Mbps,并且仍以5-6 fps的速度运行。VNC和远程桌面不这样做。又怎样? 答案会有些复杂和复杂,因此,如果您只是说这是因为它们使用UDP而不是TCP(请相信他们实际上确实确实使用TCP确实成功),请不要发布0.02美元。 我希望在StackOverflow上的某个地方有TeamViewer开发人员。 潜在答案 人们回复后将对此进行更新。 我的想法是,首先,TeamViewer具有很好的网络控制。例如,他们将大数据包拆分为MTU大小以下,并且从不浪费行程。他们可能有各种各样的花哨的钩子来检测屏幕变化以及非常快的XOR图像比较。

10
确定PHP中是否存在数组键的更快,更好的方法是什么?
考虑这两个例子... $key = 'jim'; // example 1 if (isset($array[$key])) { // ... } // example 2 if (array_key_exists($key, $array)) { // ... } 我有兴趣知道这些方法是否更好。我一直使用第一个示例,但是看到很多人在此站点上使用第二个示例。 那么,哪个更好?快点?意图更清晰?
157 php  performance 

9
使用FileInputStream时如何确定理想的缓冲区大小?
我有一个从文件创建MessageDigest(哈希)的方法,我需要对很多文件(> = 100,000)执行此操作。为了使性能最大化,我应该为读取文件设置多大的缓冲区? 大多数人都熟悉基本代码(为防万一,在此重复): MessageDigest md = MessageDigest.getInstance( "SHA" ); FileInputStream ios = new FileInputStream( "myfile.bmp" ); byte[] buffer = new byte[4 * 1024]; // what should this value be? int read = 0; while( ( read = ios.read( buffer ) ) > 0 ) md.update( buffer, 0, read ); …

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.