Questions tagged «performance»

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

14
编程语言的性能降低真的是一件坏事吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 这是我的看法。 有机器码,这是计算机运行某件事所需要的全部。计算机不在乎编程语言。对他们来说,机器代码来自Perl,Python还是PHP都无关紧要。编程语言不适用于计算机。他们为程序员服务。 一些编程语言的运行速度比其他语言慢,但这不一定是因为它们有问题。在许多情况下,这是因为它们可以执行程序员原本必须要做的更多工作(即内存管理),并且通过执行这些事情,他们在应做的工作中会更好-为程序员服务。 那么,编程语言的性能降低真的是一件坏事吗?


4
数据库设计-每次都存储状态还是计算状态?
假设我有一个关系数据库应用程序,一个“用户”对象和一个“消息”对象。现在,我想向该用户显示未读邮件的数量。 存档的最佳方法是什么?我是否在用户中引入一个字段并在用户收到消息时对其进行计数,并在他阅读消息时减少计数?还是我每次都执行查询以计算标记为未读的用户消息数? 我认为第一种方法更复杂且容易出错,但是会比第二种方法表现更好。 这通常是如何完成的,或者有什么更好的方法?

2
算法的预期运行时间和平均运行时间是什么意思?
假设我们要分析算法的运行时间。有时我们说我们想在输入大小为n时找到算法的运行时间,在最坏的情况下用O(n)表示它。有时,尽管我看到书籍/论文说我们需要找到算法的预期时间。有时也使用平均运行时间。 什么是“预期时间”?在什么情况下找到期望的时间而不是最坏的情况有用? 编辑:我认为预期的运行时间和平均运行时间之间存在细微的差别,但我不确定。通过这篇文章,我想知道确切的区别。

6
培养一个每个人都可以尝试任何想法以使软件运行更快的时间?
有时,通过方法和彻底的搜索可以发现软件性能的窍门。有时,需要疯狂的思维和勇气尝试疯狂的想法。有时,一个想法只是开始,需要大量的努力。 如何营造一个每个人都可以尝试不同想法以改善我们正在开发的软件性能的时间?团队中的每个人都有至少几个月的软件使用经验,并且非常擅长该软件。 您是否同意不同的想法将有助于找到提高软件性能的方法?为什么?为什么不? 哪些技术可以使我们快速尝试优化想法?为了从试用中获得良好的结果,是否需要快速的编码速度? 最后,应分配多少“时间”以确保良好的结果而又不会造成懈怠? 是否有必要进行实验以证明存在“做某事的更快方法”?(添加2011-06-07) 有关: 您有什么策略巧妙地提高团队水平? 什么时候代码黑客会变得糟糕? (仅出于赏金目的, -2011 / 06/07团队规模为2-4个开发人员,无专门的质量检查人员。所有代码,单元测试和性能测试均由开发人员完成。由于项目的性质,探查器结果可用于显示比例执行时间,即使它没有显示出单个瓶颈。)

5
我可以做些什么来提高VS 2010的性能吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我正在使用VS 2010,因为我们正在.NET 4中开发一个应用程序,而性能却使我发疯。当我暂时不查看IDE时(例如,当我被拉开求助电话或早上进来时),这通常是很糟糕的。 我意识到它可能是内置在WPF中的,它在不使用时会卸载资源,但是在将所有内容备份时,几分钟的延迟确实很烦人。我还注意到打开文件或编译时出现了一些严重的延迟。

7
数据库索引遵循的最佳实践
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 有哪些DO和DONT使用索引来提高数据库性能? DO应该是应该创建索引的情况,或者是与索引相关的,可以提高性能的技巧。 如果不应该创建索引,或者其他可能影响性能的索引相关操作,则不要使用DONT。

7
多个数据库调用与对Web API的网络调用真的很重要吗?
在我的一位雇主中,我们开发了REST(但也适用于SOAP)API。客户端即应用程序UI,将通过Web(在典型的生产部署中为LAN)对API进行调用。API将调用数据库。 在我们的讨论中反复出现的一个主题是性能:团队中的某些人认为,由于性能,您不应从单个API调用中进行多个数据库调用(通常是读取)。您应该对其进行优化,以便每个API调用仅(完全)一个数据库调用。 但这真的很重要吗?考虑到UI必须对API进行网络调用;相当大(毫秒级)。数据库经过优化,可以将内容保存在内存中并非常非常快地执行读取操作(例如,SQL Server可以将所有内容加载并保存在RAM中,如果可以的话,将消耗几乎所有的可用RAM)。 TLDR:当我们已经通过LAN进行网络调用时,担心多个数据库调用真的很重要吗?如果是这样,为什么? 明确地说,我说的是数量级-我知道这取决于具体情况(机器硬件,API和DB的选择等)。如果我有一个调用需要O(毫秒),那么是否会针对DB进行优化呼叫数量少一个数量级,实际上重要吗?还是这个问题比这还重要? 编辑:对于后代,我认为宣称在这种情况下我们需要通过组合数据库调用来提高性能是非常荒谬的,尤其是缺乏概要分析时。但是,是否执行此操作不是我的决定;我想知道认为这是优化Web API调用的正确方法的基本原理。

4
在简单属性上使用AggressiveInlining有不利之处吗?
我敢打赌,如果我对分析C#/ JIT行为的工具有更多了解,我会自己回答,但是由于我不了解,请耐心询问。 我有这样的简单代码: private SqlMetaData[] meta; [MethodImpl(MethodImplOptions.AggressiveInlining)] private SqlMetaData[] Meta { get { return this.meta; } } 如您所见,我放入了AggressiveInlining,因为我认为应该对其进行内联。 我认为。不能保证JIT可以内联它。我错了吗? 做这种事情会损害性能/稳定性/任何东西吗?

8
打破“完美程序员综合症”的方法
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我可能不是唯一这样的人。但是我倾向于称之为“完美程序员的综合症”,许多人可能会说它与完美主义者相同,但是在这种情况下,它属于编程领域。但是,对于这种综合症,编程领域有点问题。 您是否曾经感到过,当您进行编程时,您对自己的代码是否干净,遵循大多数最佳实践的良好代码的信心不足或从来没有足够的自信?有太多的规则要遵循,我觉得有点不知所措。当然,我并不是程序员,我喜欢编程,我认为这是一门艺术,因此我必须遵守规则。但是我也喜欢它,我的意思是我想并且我喜欢遵守规则,以便对自己正在做的事情有个很好的感觉。有关最佳做法和良好代码的信息。 也许是缺乏组织?也许是缺乏经验?也许缺乏实践?也许缺少其他人可以指出的东西?有什么办法可以摆脱这种综合征吗?

2
是什么使大型复杂软件产品变慢?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 由于很大程度上无关紧要的原因,我在这么长时间内再次安装了Delphi 7。我不得不说,我完全被震撼了-在某种程度上我还没来过。这根本不是我记得的东西。安装耗时约30秒。启动它花了2秒钟,并且立即可用。我可以在启动后第二秒钟按“运行”,不到一秒钟后,空白程序就已经可见并正在运行。万岁为计算机变得如此快! 但是我之所以被这样震撼,是因为通常我使用Visual Studio 2010,一点也不觉得这样快。诚然,Delphi 7是一个比Visual Studio 2010小得多的系统,但是它确实具有所有真正必要的东西的外观:控件面板,表单设计器,具有代码完成功能的代码编辑器。我意识到该语言可能更简单,代码完成功能可能不太强大,IDE可能没有那么可扩展且功能丰富,但是仍然:我不了解如何(即通过哪种机制)进行许多额外的功能(我可能还没有触发过)使类似Visual Studio的系统总是比较呆滞。 我想问一下在Visual Studio规模方面具有丰富经验的人:是什么让它们变慢了?是将代码库保持在人类理解能力范围内所需的抽象层吗?是否需要运行大量的代码?在时钟周期/内存使用部门(付出惊人的巨大代价)上,是否倾向于节省程序员时间的方法的现代趋势?

8
我什么时候应该关心性能?
最长的时间是在Java的IRC通道,SO等位置上,有人告诉我“担心代码的外观及其现在的可读性/可理解性,以及在绝对必要时稍后再执行性能”。因此,在最长的时间里,我并没有真正针对小型台式机或Web应用程序的性能进行OCD,只是消除了效率低下的问题。 大多数回答是“可伸缩性如何?”。没错,但是如果我的应用程序仅能解析10,000行,那我应该为一小部分将要推送到1,000,000行文件中的人弄乱我的代码吗? 我的主要问题是,我何时应该以简单但效率低下的方式来处理大型复杂的大型野兽,这些野兽的处理速度极快,但却破坏了所有可能的升级方式,并使代码过于困难,并且容易被下一个开发人员重写。

22
您应该在什么时候开始考虑性能?
在构建应用程序时,我发现自己不断在问这是否是执行或实现某些功能的最佳方法。通常,我会在stackoverflow或其他论坛上发布问题,仅希望收到反馈,以便收到有关如何不“把马放到马前”有关性能的评论。大多数程序员在应用程序完成之前是否真的没有考虑性能,还是性能绝对不能接受?我的意思是,我了解开发环境与生产环境不同,您不应该完全依赖开发笔记本电脑的结果...但是,有些实践和技术可以提供比其他产品更好的性能。 在整个开发过程中考虑性能是不好的做法吗?在性能真正下降之前,我应该推迟考虑这些因素吗? 更新资料 明确地说,我是在谈论您正在考虑或即将使用某些功能的情况。您知道有几种实现方法,但是您不确定每个实现的扩展程度。另外,可能还有几种您不熟悉的技术。在较小的规模上,任何一种方法都可能是适当的,但是在较大的规模上,某些方法会跟上,有些则不会。通常,当我征求意见或指导时,答复是:以后再担心...

3
为什么要使用Android Fragments?
我已经阅读了有关该主题的文档和其他一些问题的主题,但我并没有真正感到信服。我看不出使用此技术的局限性。 片段现在被视为最佳实践 ; 基本上,每个活动都应该是对一个或多个片段的支持,而不是直接调用布局。 创建片段是为了: 允许Activity使用多个片段,在它们之间进行切换,重用这些单元... ==> Fragment完全依赖于ContextActivity的,因此,如果我需要可以在许多Activity中重用和处理的通用类,创建自己的自定义布局或视图...我不会在意片段会添加的这个额外的复杂性开发层。 对于平板电脑/手机,更好地处理不同分辨率==>确定,以防长时间处理,我们可以在平板电脑的“同一活动”中显示两个(或多个)片段,在手机中一个一个地显示。但是为什么我总是使用片段? 处理在片段之间导航的回调(即:如果用户已登录,则显示一个片段,否则显示另一个片段)。===>试着看看有多少bug导致了Facebook SDK登录,以了解它确实是(?)... 考虑到Android应用程序是基于活动的...在活动中添加另一个生命周期会更好地设计应用程序...我的意思是模块,方案,数据管理和连接性会得到更好的设计,因为办法。===>这是一个曾经用Fragments愿景看过Android SDK和Android Framework的人的答案。我不认为这是错误的,但是我不确定它是否会产生良好的结果。而且它真的很抽象。 ====>为什么总是使用它们会使我的生活变得复杂,编写更多代码?否则,如果它只是某些情况下的工具,那为什么是最佳实践呢?这些情况是什么?

5
有关为微控制器编写高效的C代码的资源?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 这里需要认真的帮助。我喜欢编程。最近,我一直在在线阅读有关C语言的大量书籍(例如K&R)和文章/论坛。甚至尝试研究Linux代码(尽管我不知道该从哪里开始,但是窥探小型库有帮助吗?)。 我最初是一名Java程序员,在Java中相当干cut。如果程序太大,则将其切成类,然后进一步细分为函数。准则,例如,保持代码可读性并添加注释。使用信息隐藏和OOP技术。其中一些仍然适用于C。 我现在一直在用C进行编码,到目前为止,我可以使程序以某种方式工作。许多人谈论性能/效率,算法/设计,优化和可维护性。有些人比其他人压力更大,但是对于非专业的软件工程师,您经常会听到类似这样的信息:Linux内核开发人员不会仅仅接受任何代码。 我的问题是:我计划在不浪费任何资源的情况下为8位微控制器编写代码。知道我来自Java背景,所以事情已经不一样了...资源/书籍/链接/技巧将不胜感激。性能和大小现在很重要。针对8位微控制器的有效(最佳实践)C代码的资源/技巧? 此外,它还inline assembly扮演着至关重要的角色,并且坚持遵守微控制器标准。但是,效率是否有适用于所有人的一般经验法则? 例如: 随时register unsigned int variable_name;首选char。或使用 uint8_t ,如果你不需要大的数字。 编辑:非常感谢您的所有答案和建议。感谢大家为共享知识所做的努力。
15 c  performance  speed 

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.