Tcl 中测试数组元素是否存在的最快方法是什么?
info exists ::myArray($myKey)是,效率高吗?llength [array names ::myArray -exact $myKey],这样会更快吗?这些也是 Nadkarni 在 Tcl 书中列出的可能性。还有其他更有效的想法吗?
感谢您的帮助!
对于数组的特定元素,迄今为止最快的检查方法是使用info exists ::myArray($myKey); 它编译为自己的字节码操作码 ( existArrayStk),该字节码操作码 ( ) 被有效实现 \xe2\x80\x94 可能需要进行一次哈希表查找来查找数组实现(可能有缓存),以及一次哈希表查找来获取元素(如果有) 。(有时不限定数组名称会更快;但这取决于上下文。)
命令array names总是会变慢;如果不出意外的话,它就不是字节码的。虽然在这种情况下它可能能够避免数组的线性扫描,但它仍然肯定需要进行列表构造等。该代码路径上的成本只是更高,而且很可能永远如此。
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |