使用TCL C API读取文件并填充TCL阵列要快得多 使用标准TCL做同样的事情。我有一个大约100 + MB的大文件,我需要阅读并设置一些哈希条目。使用TCL C API似乎不能提供速度优势的2至4倍。这是常见的还是我错过了什么?
答案 0 :(得分:3)
在这种情况下,您不太可能获得很大的性能提升,因为当您从C API设置数组条目时,如果您只编写代码,则会承担很多成本作为程序中的Tcl 。特别是,通过使用效率低下的子API,您可以非常轻松地获得更差的性能; Tcl的一些API函数不是很快(例如,Tcl_SetVar
),但由于使用它们的大量现有代码(以及更快的函数需要更多C代码使用的事实)它们被保留。请记住,设置一个数组元素需要一个强制哈希表查找,并且那些具有实际成本(尽管事实上Tcl使用非常快 - 如果相当愚蠢 - 哈希)。
更重要的是,您可以通过使用Tcl列表或字典(取决于您想要存储的内容)来获得更好的性能,并且这些C API非常快(特别是对于列表,它们实际上是{{C的C数组1}}参考)。我不知道的是,这样做是否适合您的目的。
答案 1 :(得分:2)
C API主要是为了让您编写Tcl扩展,并且只暴露“纯Tcl”本身所写的例程。在您描述的情况下,我不希望看到太多的性能差异并记住:
过早优化是所有邪恶的根源(或者至少是大部分的 它在编程中。
Donald Knuth的计算机编程艺术(1974)
答案 2 :(得分:0)
如果你真的需要加载大量数据,可能会有一些像NAP(http://wiki.tcl.tk/4015)或类似的扩展名吗?