Questions tagged «performance»

与提高应用程序性能有关的问题可能涉及从选择软件体系结构到算法选择的范围。

4
混合硬盘是否可以改善编程体验?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 我已经厌倦了我的PC的发展。它是Core2 Duo,2GB RAM,Seagate ST3500320AS HDD-不是顶级型号,但相当不错。 通常,我打开Visual Studio 2008的多个副本,在Firefox,Outlook,MSDN中打开许多选项卡,再调试的程序也非常庞大,再加上Windows认为无法运行的所有功能,因此我最终看到任务管理器显示类似2的内容。 ,5 GB页面文件使用率。 上面的所有软件都变得很笨拙,以至于令人讨厌。就像我单击Visual Studio中的菜单栏一样-而不是仅打开菜单,它可以使硬盘工作10秒钟。 我想要一个神奇的“别让我思考”的解决方案-使其安装一次,然后凸耳消失或至少明显减少。它应该不会很昂贵-类似于混合驱动器的当前价格。 混合动力驱动器会神奇地帮助我彻底解决我的问题吗?您是否有将混合驱动器用于类似用途的经验?

3
不直观的C#String.Split()实现的原因
在C#中,如果我想将a分开string,string则必须执行以下操作: testString.Split(new string[] { "anotherString" }, StringSplitOptions.None); 从过载的String.SplitMSDN文档中,我们可以看到实现以及为什么必须进行这样的调用。 来自Python,我很难正确理解为什么需要这样的调用。我的意思是我可以Regex.Split用来获得与Python实现类似的语法,但是对于任何简单的事情,我都必须以降低性能(设置时间)为代价来实现。 因此,基本上,我的问题是,为什么我们不能做这样的事情: testString.Split("anotherString"); 请注意,我不建议任何原型或实现。我了解,考虑到当前的API,为什么您无法实现上述版本。我的目标是考虑到上述语法带来的好处,为什么要创建这样的API。到目前为止,灵活性似乎已成为当前潮流的目标String.Split,但老实说,我确实认为在某种程度上可以提高性能。我想我错了。


5
您是否应该尽量减少创建许多小对象?
在编写经常创建许多(1000个)小对象的东西时,您是否应尝试将其最小化以提高性能?特别是如果您不知道它将在低端台式机到高端台式机甚至是移动设备上运行的系统。对于移动设备,我听说创建很多对象会严重影响性能,尽管我不知道那是多么真实。 我有一个例子很好地说明了这个想法。例如,在图形程序中,存在一种理想地用于所有绘图的方法drawPixel(Point)。可能会创建1000点,并且可能会经常重复,例如在游戏中每秒可能会被调用60次以上。或者,drawPixel(int x, int y)可用于最小化许多Point对象的创建。 在面向对象的设计中,我认为首选使用Point。但是,使用基本类型可以提高性能。在大多数情况下,性能提升可以忽略不计,但是我不确定移动设备或旧机器之类的东西。这样做会提高性能,应该考虑吗?

5
是否存在技术限制或语言功能阻止我的Python脚本像等效的C ++程序一样快?
我是Python的长期用户。几年前,我开始学习C ++,以了解它在速度方面可以提供什么。在这段时间里,我将继续使用Python作为原型制作工具。看来,这是一个很好的系统:使用Python进行敏捷开发,在C ++中快速执行。 最近,我越来越多地使用Python,并学习如何避免早年使用该语言时很快使用的所有陷阱和反模式。据我了解,使用某些功能(列表理解,枚举等)可以提高性能。 但是,是否存在技术限制或语言功能使我的Python脚本无法与同等C ++程序一样快?

4
在Java中分割定界字符串的最快方法
我正在构建一个在分隔字符串上提供多列排序功能的比较器。我目前使用String类的split方法作为将原始String拆分为标记的首选。 这是将原始String转换为String数组的最佳方法吗?我将对数百万行进行排序,因此我认为方法很重要。 它似乎运行良好并且非常简单,但是不确定Java中是否有更快的方法。 这是我的比较器中排序方式的工作方式: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } 在对各种方法进行基准测试之后,不管您信不信,使用最新版本的Java最快的方法是split方法。您可以在这里下载我完成的比较器:https : //sourceforge.net/projects/multicolumnrowcomparator/

7
何时开始考虑可伸缩性?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我遇到了一个有趣但又可怕的问题。我将要启动一个新的(iPhone)应用程序。这是在我自己的自定义后端上运行的基于回合的多人游戏。但是我怕发射。 由于某种原因,我认为它可能会变得很大,并且它的流行将杀死我可怜的孤独的单服务器+ MySQL数据库。 一方面,我在想如果它正在增长,那么我最好做好准备,并拥有可扩展的基础架构。 另一方面,我只是想将其发布到世界上,看看会发生什么。 我经常读诸如“过早的优化是万恶之源”之类的文章,或者有人说您应该立即使用手头的工具来构建杀手级游戏,而后再担心诸如可扩展性之类的问题。 我很想听听专家或有经验的人对此的一些看法。谢谢!

2
是否对编程语言运行时的内存消耗进行了比较研究,并将其与表达能力和生产错误率相关联?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 关于使用一种或多种语言构建的应用程序的运行时性能,有许多比较研究并可以在线获得。有些是由公司推动的,有些是学术的,有些只是个人的实验报告。 在编程语言及其工具的副作用方面,我们也得到了相当多的比较研究,例如: 建立时间 后期发现错误的可能性, 表达能力, 等等... 但是,最近,我对程序的内存消耗感到越来越沮丧,这比其他任何事情都重要。这可能来自以下事实:尽管摩尔定律在我们的工作上表现出色,但我们已经意识到其他瓶颈更为重要。这样,而且我不会经常这样更新硬件,而且我有一些“旧的”(阅读2005-2006 3.6GHz Pentium 4,具有4GB的内存),如今很难被其用于大型应用程序而无需要求我费很大的劲才能从中榨汁(例如,操作系统,UI,服务和守护程序的调整,选择用于任务或其他用途的应用程序...)。老实说,有时我看到最无辜的程序使用的内存时会发火top或procexp哭泣。 我可以通过坚持上述方向来解决这个问题,并且本质上是要限制自己和我使用的程序(出于这个原因,我对cli程序非常热爱,我想),但是我也不得不思考也许我们做错了。 满足现代需求的现代工具 当然,高级语言可以说是更好的选择,并证明它们值得承担沉重的负担。当时,出于很多原因(或合理预期),在许多工具链中做出了一些设计选择。共享的库,内存模型,预处理器,类型系统等。但是使用我们的现代硬件,某些库可能比另一些库更可行,我很想阅读一些对此事的认真研究。 因此,我的问题是,基准游戏和其他游戏是否有侧重于比较语言的基本运行时内存消耗? 甚至更进一步,是否有一些研究将此与其他参数进行交叉引用(类似于本文所做的,例如,对于其他标准,也基于基准博弈)?

4
为什么不在C#中使用非托管安全代码
C#中有一个选项可以执行未经检查的代码。通常不建议这样做,因为托管代码更加安全并且可以解决很多问题。 但是我想知道,如果您确定您的代码不会引起错误,并且您知道如何处理内存,那为什么(如果您喜欢快速代码)遵循一般建议? 我想知道这一点,因为我编写了一个用于摄像机的程序,该程序需要非常快速的位图处理。我自己制作了一些快速的图形算法,并且使用非托管代码在位图上效果很好。 现在,我通常会怀疑,如果您确定没有内存泄漏或崩溃的风险,为什么不更频繁地使用非托管代码? PS我的背景:我有点涉足这个编程领域,而且我一个人工作(我从事了几年),所以我希望这个软件设计问题不会那么奇怪。我真的没有其他人像老师那样问这些事情。

4
“我们希望对其进行编译,以免烧毁CPU做错事情。”这句话的含义是什么。
我在读这篇文章。它具有以下段落。 Scala真的很快吗?那么,您对fast的定义是什么?大约和Java一样快。它不必与C或Assembly一样快。Python没有比Ruby快很多。我们想用更少的机器做更多的事情,以更好地利用并发性。我们希望对其进行编译,以免烧毁CPU做错了事情。 我正在寻找最后一句话的含义。解释语言将如何使CPU做“错误”的事情?

5
提高对大文件的grepping的性能
我有FILE_A有30万行,而FILE_B有3000万行。我创建了一个Bash脚本,将FILE_A中的每一行都移到FILE_B中,并将grep的结果写入新文件。 整个过程耗时超过5个小时。 如何提高脚本的性能? 我正在使用grep -F -m 1grep命令。FILE_A看起来像这样: 123456789 123455321 FILE_B是这样的: 123456789,123456789,730025400149993, 123455321,123455321,730025400126097, 因此,对于Bash,我有一个while循环,可以在FILE_A中选择下一行,然后在FILE_B中进行抓取。在FILE_B中找到该模式后,我将其写入文件result.txt。 while read -r line; do grep -F -m1 $line 30MFile done < 300KFile

6
受益于在GPU上运行的通用算法示例?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我正在寻找通用算法(与图形无关)的示例,这些算法已被证明在GPU上比在CPU上运行快一个数量级。我将使用这些示例来创造性地考虑可以在GPU上实现的其他算法。


10
在客户眼中,软件速度多久能体现一次?
从理论上讲,客户应该能够从第一手经验中感受到软件性能的提高。 在实践中,有时改进不够明显,因此为了从改进中获利,有必要在营销中使用可引用的绩效指标以吸引客户。 我们已经知道感知性能(GUI延迟等)和服务器端性能(机器,网络,基础结构等)之间的区别。 程序员多长时间需要一次额外的工作来“编写”性能分析,而受众不是程序员,而是经理和客户?

10
如何与认为框架对性能有影响的同事进行沟通
当常见的响应是一个笼统的声明,例如“ jquery”时,如何出售“我们应该使用jQuery,因为它的高度优化和跨浏览器兼容”或“实体框架很酷,因为它简洁并且可以自动处理我们的模型”这样的想法表现不佳”还是“当我们只需要10个实体时,表中的实体就会带来12列”? 我是一个务实的人,倾向于相信我通过经验开发的公理(除非出现明显的减速,否则它不是性能问题)。我不知道另一个极端是否适合某个特定的“类别”,而在没有其他证明之前,一切都是性能问题……甚至在这里开始沟通。

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.