首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纯TCL与TCL C API填充TCL数组的性能比较

纯TCL与TCL C API填充TCL数组的性能比较
EN

Stack Overflow用户
提问于 2012-07-26 10:17:45
回答 3查看 606关注 0票数 2

与使用标准TCL读取文件和填充TCL数组相比,使用TCL C API读取文件和填充TCL数组要快得多。我有一个关于100+MB的大文件,我需要读取它并设置一些散列条目。使用TCL C API似乎不能提供最多2到4倍的速度优势。这是正常的吗?还是我错过了什么?

EN

回答 3

Stack Overflow用户

发布于 2012-07-26 18:16:08

在这种情况下,您不太可能获得很大的性能提升,因为当您从C API设置数组条目时,您将承担大量成本,如果只是在过程中以Tcl的形式编写代码。特别是,使用低效的子API很容易导致性能下降;Tcl的一些API函数速度不是很快(例如,Tcl_SetVar),但由于大量的现有代码在使用它们(并且较快的函数需要更多的C代码才能使用),所以它们被保留了下来。请记住,设置数组元素需要强制的哈希表查找,并且这些查找具有实际的成本(尽管Tcl使用了非常快的-如果相当愚蠢-哈希)。

更重要的是,您可以通过使用Tcl列表或字典(具体取决于您想要存储的内容)获得更好的性能,并且对它们的C API非常快(特别是对于列表,这实际上是Tcl_Obj引用的C数组)。我不知道的是,这样做是否适合你的目的。

票数 3
EN

Stack Overflow用户

发布于 2012-07-26 14:48:09

C API主要是用来编写Tcl扩展的,它只公开了“纯Tcl”本身所使用的例程。在你描述的这种情况下,我不希望看到太多的性能差异,并记住:

过早优化是编程中所有邪恶(或者至少是其中的大部分)的根源。

作为艺术的计算机编程(1974年),Donald Knuth

票数 2
EN

Stack Overflow用户

发布于 2012-07-26 16:17:19

如果你真的需要加载大量数据,也许像NAP (http://wiki.tcl.tk/4015)或类似的扩展是合适的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11661397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档