2016-12-27 179 views

回答

2

我期望之一:

string equal $s "" 

expr {$s eq ""} 

将是最快的;这两种情况会产生几乎相同的字节码,所以我不希望区分它们。

+0

谢谢 - 这真是太棒了 – BabyGroot

2
proc check {} { 
set s {} 
puts "string equal ->[time {string eq $s ""} 100000]" 
puts "string compare ->[time {string compare $s ""} 100000]" 
puts "regexp   ->[time {regexp ^$ $s} 100000]" 
puts "expr ==  ->[time {expr {$s == ""}} 100000]" 
puts "expr eq  ->[time {expr {$s eq ""}} 100000]" 
} 
check ; # See the behavior in your PC 
+0

我不知道这是否是一个好办法。第一种测试方法总是花费最长的时间(即,如果不再处于顶端,那么花费最长时间的方法花费的时间最长)。就个人而言,我认为字符串平等和比较是更快的。虽然在写'if'时,我会使用'$ s eq“”'。 [见这个wiki](http://wiki.tcl.tk/15322)。 – Jerry

+0

该方法存在不与完全相似的情况。 –

相关问题