The*_*eAJ 10 memory performance
在编程时我一直都会想到这一点,所以我想在实际到达之前我会把它吐出来.
我应该更担心什么?应用程序消耗的内存或性能.我的意思是,我应该专注于为应用程序使用更少的内存并使用更多的性能(例如,通过数据库加载,并在使用后转储它),或者使用更少的性能和使用更多的内存(例如缓存)
我的应用条件: - 它是一个服务器应用程序,所以它不打算在桌面等上运行,我有6GB的RAM,我有一个四核.
Car*_*icz 14
你的问题吸引了许多像禅宗一样的回应.我希望做得更好.
你的内存限制很难:如果超过它,即使有虚拟内存,你的应用程序也会爬行,你将成为所有人的笑柄.
您的CPU时间是无限的:您的应用程序将花费您需要的任何时间; 希望这将是足够平行的,所有4个CPU将在大多数情况下全力烹饪,直到你的应用程序完成.
许多计算机科学问题有各种各样的解决方案,各种记忆与时间的权衡.所以:慷慨的记忆,直到你使用至少一半(如果这有帮助;不要浪费记忆!)但停止,而剩下足够的记忆,你不必担心超过限制,即使在特殊情况下或意外.
现在您已经分配了内存资源,您可以尝试从代码中调整一些更小的性能提升.但是不要过分夸大它.
完成.
PS如果它不能正常可靠地工作,前面的所有努力都毫无价值.记住这一点!
祝好运.
这实际上取决于程序的类型。如果你可以控制目标机器,事情就会变得容易一些。如果您知道即使在极端情况下,您也不会耗尽内存,那么您最好使用您想要的所有内存。不被任何东西使用的内存没有任何优势。
一般来说,我认为事情分为几类。
补充程序,如果程序不执行机器的主要用途,那么它应该尝试节省内存,虽然不是服务器的东西,但我通常在这种情况下想到的例子是桌面小部件和Tomboy..它们不是主要用途,因此它们不应该从系统中夺走太多资源,这可能会损害主应用程序的性能。
一般应用程序,这些应用程序具有简单的优先级。首先完成所需的工作,然后如果慢,就加快速度。你不需要太担心内存,除非你很鲁莽(或者使用 python 或 java :-) )
许多实例应用程序。如果您希望用户拥有应用程序的多个实例,或者作为多个任务,或者只是同一任务中的多个实例(如多个 Firefox 窗口/选项卡),因为事情会成倍增加,您需要控制内存使用情况。速度与其说是使操作更快,不如说是确保空闲实例实际上不进行任何处理。
巨型应用程序,如果您的应用程序实际上有一个巨大的任务要执行,例如图像处理,那么您应该从一开始就考虑内存使用情况。我怀疑 Evolution 消耗了大量内存(目前我的机器上有 142 兆),因为他们有一个庞大的任务,但没有意识到这一点。我有很多电子邮件,大部分来自列表,
如果您可以控制目标环境,那么您可以根据需要拥有尽可能多的内存,这对您来说更容易。如果其他用户要拥有您的程序,那么需要更多内存对您来说仍然更容易,但对用户来说并不友好。
我正在 OLPC XO 上进行开发,主要是想通过补充程序使系统变得更好。这意味着我真正关注的是低内存使用量,但即使在内存受限的系统上,我发现进一步减少内存使用量也没有多大用处。启动后,它有超过 150 兆的空闲空间。这足以运行您想要的所有轻量级应用程序,但大多数较重的应用程序将是一种压力。中间地带很少。如果您正在运行像 Firefox 这样的应用程序,进一步优化 2 meg 应用程序以仅使用 1 meg 并不会为您提供更多的活动空间。
考虑您将要处理的数据量以及您需要的响应能力.在设计中加入一些思考.将其构建为可维护的,并使其正常工作.
然后分析,并解决您的实际瓶颈.
这个问题和编程本身一样古老。不幸的是,答案是“这取决于情况”。如果您正在为具有 32 GB RAM 的系统编写应用程序,并且您的软件是唯一运行的东西,那么您应该编写代码来利用它。另一方面,如果您正在编写将在嵌入式系统上运行的代码,则可能应该使用尽可能少的内存。最重要的是,您了解这些权衡,分析您的代码,并优化最大的瓶颈。
| 归档时间: |
|
| 查看次数: |
6416 次 |
| 最近记录: |