有人应该专注于尽可能少的内存泄漏还是拥有最快的计算时间?
Should someone focus on having as less memory leaks as possible or having the fastest computing time?
我想知道:
在编程时,应该关注尽可能少的内存泄漏还是更多地关注 CPU 计算时间?
pros/cons是什么?
谢谢!
如果程序 运行 非常快(例如几分之一秒)并且您想 运行 它无数次,内存泄漏根本无关紧要(因为在很短的时间内时间它将只分配少量合理的内存,并且 OS 将在进程终止时回收该进程使用的内存。
如果您的程序不能运行 快速(特别是如果它连续 运行,例如因为它是服务器或守护程序),内存泄漏是最重要的。
顺便说一句,内存泄漏的含义可能略有不同(在 C 中与在 Ocaml 中不同)。
如果使用 C 或 C++ 编码,请使用 valgrind 检测内存泄漏。
另请参阅 garbage collection (see also the GC handbook). At the very least, the terminology and the algorithms related to GC should concern you. In C, you might sometimes consider using Boehm's conservative garbage collector。
@basile 的回答是正确的。值得澄清一下 "memory leaks".
的意思
内存泄漏的严格定义是动态内存块在使用后从未被释放。我认为这在任何情况下都是不可接受的。
但是,幸运的是,避免内存泄漏和有效地使用 CPU 时间通常不是相互矛盾的理想。
听起来您的问题更像是 "is it more important to cut down on CPU cycles, or is it more important to use as little memory as possible?" 这是一个常见且完全有效的问题,因为在编程中有许多实例,您可以通过将内容转储到 CPU 来削减周期内存,或者另一方面,您可以通过暴力破解来节省内存。
唉,没有明确的答案。有适合的时候,也有适合的时候。随着您作为一名程序员的成长,您将学习如何高效地使用这两者的最佳实践。而且,在现实世界中,只要您负责任地编程,您可能永远不会看到 不得不 牺牲其中之一的实际情况。尤其是现代芯片的速度。
我想知道: 在编程时,应该关注尽可能少的内存泄漏还是更多地关注 CPU 计算时间? pros/cons是什么?
谢谢!
如果程序 运行 非常快(例如几分之一秒)并且您想 运行 它无数次,内存泄漏根本无关紧要(因为在很短的时间内时间它将只分配少量合理的内存,并且 OS 将在进程终止时回收该进程使用的内存。
如果您的程序不能运行 快速(特别是如果它连续 运行,例如因为它是服务器或守护程序),内存泄漏是最重要的。
顺便说一句,内存泄漏的含义可能略有不同(在 C 中与在 Ocaml 中不同)。
如果使用 C 或 C++ 编码,请使用 valgrind 检测内存泄漏。
另请参阅 garbage collection (see also the GC handbook). At the very least, the terminology and the algorithms related to GC should concern you. In C, you might sometimes consider using Boehm's conservative garbage collector。
@basile 的回答是正确的。值得澄清一下 "memory leaks".
的意思内存泄漏的严格定义是动态内存块在使用后从未被释放。我认为这在任何情况下都是不可接受的。 但是,幸运的是,避免内存泄漏和有效地使用 CPU 时间通常不是相互矛盾的理想。
听起来您的问题更像是 "is it more important to cut down on CPU cycles, or is it more important to use as little memory as possible?" 这是一个常见且完全有效的问题,因为在编程中有许多实例,您可以通过将内容转储到 CPU 来削减周期内存,或者另一方面,您可以通过暴力破解来节省内存。
唉,没有明确的答案。有适合的时候,也有适合的时候。随着您作为一名程序员的成长,您将学习如何高效地使用这两者的最佳实践。而且,在现实世界中,只要您负责任地编程,您可能永远不会看到 不得不 牺牲其中之一的实际情况。尤其是现代芯片的速度。