是否对编程语言运行时的内存消耗进行了比较研究,并将其与表达能力和生产错误率相关联?[关闭]


10

关于使用一种或多种语言构建的应用程序的运行时性能,有许多比较研究并可以在线获得。有些是由公司推动的,有些是学术的,有些只是个人的实验报告。

在编程语言及其工具的副作用方面,我们也得到了相当多的比较研究,例如:

  • 建立时间
  • 后期发现错误的可能性,
  • 表达能力,
  • 等等...

但是,最近,我对程序的内存消耗感到越来越沮丧,这比其他任何事情都重要。这可能来自以下事实:尽管摩尔定律在我们的工作上表现出色,但我们已经意识到其他瓶颈更为重要。这样,而且我不会经常这样更新硬件,而且我有一些“旧的”(阅读2005-2006 3.6GHz Pentium 4,具有4GB的内存),如今很难被其用于大型应用程序而无需要求我费很大的劲才能从中榨汁(例如,操作系统,UI,服务和守护程序的调整,选择用于任务或其他用途的应用程序...)。老实说,有时我看到最无辜的程序使用的内存时会发火topprocexp哭泣。

我可以通过坚持上述方向来解决这个问题,并且本质上是要限制自己和我使用的程序(出于这个原因,我对cli程序非常热爱,我想),但是我也不得不思考也许我们做错了。

满足现代需求的现代工具

当然,高级语言可以说是更好的选择,并证明它们值得承担沉重的负担。当时,出于很多原因(或合理预期),在许多工具链中做出了一些设计选择。共享的库,内存模型,预处理器,类型系统等。但是使用我们的现代硬件,某些库可能比另一些库更可行,我很想阅读一些对此事的认真研究。

因此,我的问题是,基准游戏和其他游戏是否有侧重于比较语言的基本运行时内存消耗?

甚至更进一步,是否有一些研究将此与其他参数进行交叉引用(类似于本文所做的,例如,对于其他标准,也基于基准博弈)?


3
为什么基准游戏不足?它可能是最好的资源,并且已经详细介绍了内存消耗。
罗伯特·哈维

@RobertHarvey:它确实提供了内存信息,但是它不是针对“基本”运行时的。另外,我发现从Benchmarks Game中提取信息相当不可思议(更值得称赞的是该文章在数据方面做得很棒,尽管它不是我所追求的)。
haylem

1
如果您提供了有关您要解决的问题的信息,并提供了诸如执行环境和所需内存消耗之类的详细信息,它可能会帮助尝试回答您问题的人员。如果您要针对嵌入式环境(其中使用的内存量很重要)编写软件,而不是为最新水平的台式机(其中的内存消耗基本上无关紧要)编写软件,那么答案将有所不同。极大)。
罗伯特·哈维

2
How much memory consumption makes you weep?对于不带扩展名的无效Chrome标签页,为30MB;对于ATI的CCC,为100MB;对于无效的googletalk插件,甚至为11MB;对于无效的打印机驱动程序,为23MB。这些东西,还有更多。chrome的示例有点复杂,因为它是一个更复杂的示例,但是其他示例已经使我大为惊讶。
haylem 2013年

Answers:


7

我发现了一些部分信息,因此我将开始用自己的答案来汇编我的发现。请不要阻止您贡献自己的答案(或编辑此答案)。

现有文献:

  • 7种编程语言的实证比较 -Prechelt(2000)[ PDF ]

    有点过时了,但涵盖了我感兴趣的一些材料,并确实提供了运行时内存使用和表现力的视图。现在结果可能会有很大的不同,但这是一个有趣的开始。

  • 编程语言的速度,大小和可依赖性 -Marceau(2009)[ Blog ]

  • 代码中使用,时间使用的形状基准游戏 [ U32u32qU64u64q ]

    尽管不包括运行时内存消耗,但Marceau的工作或多或少是我愿意为该标准所做的参考或经验研究,无论是内容还是质量。只是针对不同的指标,这是我追求的一个很好的例子。第二篇文章是在Benchmarks Game网站上找到的后续文章,该文章是在Marceau的作品发表后不久(并引用)发布的,具有更新的屏幕和更多的语言,但仍没有运行时内存详细信息。然后,这些页面上的每个图形都会导致语言与语言的比较,但是确实提供了高级内存信息。


Marceau的工作是讲故事的练习,有些故事没有意义-“引入功能特征会降低性能吗?” 忽略了一个简单的事实,即某些“功能语言”程序可能不使用功能功能。数据取自基准游戏的前身;最初使用时没有理解,因此发布后有多个更正周期(请检查注释)。
igouy

对于您的“基本运行时内存消耗”,可能需要对“ hello world”程序进行简单比较。
igouy

@igouy:是的。对此毫无疑问,但是我希望自己不必自己进行实验和记录/维护:)实际上,甚至比一个hello世界还好,因为在某些情况下,甚至不需要链接到(或例如,加载)打印例程。(禁用编译器优化和其他建议也是可取的)
haylem 2013年

@igouy:关于Marceau的工作,我知道我已经阅读了页面,评论,更新的Benchmark Game页面,并与他保持联系。我认为这篇文章仍然是不错的参考。它不完美的事实并没有夺走它的价值,它仍然朝着我想要发现(或重塑自我)的方向发展。
haylem 2013年

“但我希望自己不必自己进行实验和记录/维护” –查看InternetArchive中的度量。不幸的是,我认为《 Hello World》的内存测量结果完全令人误解,并在2005
。– igouy 2013年

1

这不是回答每个人说的问题,而是可能会改变观点。我谨记聊天记录,以设定此答案的基调,肯定会引起很多反对。

有些人,硬件提供商,工具提供商和程序员都在关注效率。目前,对他们以及我们所有人来说,这将越来越引起人们的关注。这些担忧根源于移动设备,尤其是屏幕最大,收音机功能最强的高功率电池吞噬怪物。

再退一步,部分原因是我们处于当今的状况,拥有相对庞大的框架,并且除了硬件改进外,还有些忽视总体效率。与旧系统的兼容性使我们在兼容性之上获得了兼容性。根本不是顶级运行时的问题,因为它们在本质上是相同的运行时,在不同的操作环境(例如Xbox,Windows Mobile pre 7/8 / surface,java micro framework)中使用时,其运行效率和性能都很高等)。

将台式机与其旧版软件所具有的兼容性程度与移动设备所具有的兼容性程度进行比较。

对于移动设备,设备生产商会尽力确保某些兼容性,但他们并未将兼容性作为核心基础。在继续提供兼容性和向前移动移动系统之间进行选择时,移动系统将向前移动。

对于台式机,情况恰恰相反。如果重大的突破性变化错误地打击了营销人员或早期采用者,则它将所需的功能和需要的重新设计多次推向后台。在某些时候,我记得有种谣言,即我们作为Windows用户会发现使用Windows XP的全新文件系统,然后是Vista,后来是七个,最后是八个,但没有,只是因为我们首先在Windows2000上看到它吗?新文件系统搁置了很长一段时间,被废弃了,但是我无法说,后来有传言决定了故事。这可能是已知的最大案例,但我肯定这不是唯一的大案例。

即便是使用最新的平板电脑和移动操作系统,曾经塑造市场的微软现在也不仅与消费者纠缠不休,而且与台式机部门的阴影笼罩。平板电脑必须与台式机具有明显的互操作性。不,由于架构上的差异,它不能完美地发挥作用,而且由于桌面基础的过时特性,它做出了重大牺牲。

现在可以肯定的是,对于这种情况,Windows容易受到任何形式的批评,但是其他平台远非“无罪”。在Linux生态系统中潜伏着许多遗物,我相信会对系统改进产生极大的惊吓。

经济学在这个方程式中起着重要的作用。我们如何在一个平台上为我们的计算和应用程序提供资金,以及在另一个方面如何为它们提供资金,遵循的模式却截然不同。在Wintel曾经严重影响过时的地方,Apple和Google已将其变成几乎严格的时间表。这超出了我的原意,因此我将离开原处,让读者从那里拿走。

如果大型供应商改变过时和定价模型,那么他们可以以更大的幅度和更均匀的速度开始前进。由最高阶语言驱动的那些顶级框架将以某种方式缩小,因为它们将能够以更低的效率(如效率)来完成其高层任务,因为低效的中间兼容性和低层将如果没有消除,将大大减少。


确实并不能真正回答,它更像是自由形式的想法,增加了问题的背景:)不过,感谢您+1。(此外,我想澄清的是,我从未打算将Microsoft系统作为罪魁祸首的一部分。如果系统的内存模型和可执行文件格式允许,则任何OS都是同一问题)。
haylem 2013年

我当然不是想戳微软,但对于大多数人来说,这是最容易看到的情况。其他大牌厂商,即使在也许略有不同的方面,也与传统供应商处于同一条船上(例如,工业级数据库和网络设备;他们继承了多少妥协,否则会阻碍其基础产品创新和价值的重大改善) 。在我们每个人所支持的产品上,甚至离家更近的地方,我们也将这个著名的十字架带到了一个或另一个角度。
JustinC
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.