读书人

求讨论上数据窗口object.字段名 跟get

发布时间: 2012-10-20 14:12:48 作者: rapoo

求讨论下数据窗口object.字段名 跟getitem的区别跟联系
在网上也看了下资料,关于用哪个快?最规范?还是object仅仅是为了保留之前的兼容性才一直没有废弃。。

[解决办法]
getitem系列方法更快。
[解决办法]
getitem是制定了数据类型的取值,当然比没有指定取值类型的object.字段名来得快
[解决办法]
object.data 和getitem差不多,是最快的


[解决办法]
测试过了,20万行的记录,用for循环来读取数据
for i = 1 to dw_1.rowcount()
ls = dw_1.getitemstring(1, 'a')
next
历时:1485毫秒

for i = 1 to dw_1.rowcount()
ls = dw_1.object.a[i]
next
历时:4313毫秒

差距明显,其实不用测试也可以得出结论
object.获得的数据类型是any,再赋值给具体的类型,还得经过类型转换这一步,时间绝对要长一些,当然这一步转换时间差不是特别大

效率差距还是在于从数据窗口中获取数据


[解决办法]
但用数据组读一例数据,object.字段 比getitem一个个读快了很多。
[解决办法]
嘿嘿,很有意义的讨论!

应该是getitemxxx()快些吧。不过本人比较懒,平常都是用object.xxx,打代码时快些。惭愧。

To yyoinge:
ls = dw_1.getitemstring(1, 'a'),其中的1是笔误吧?如果是测试的代码,得改成ls = dw_1.getitemstring(i, 'a')再测试下,结果才更实在。

[解决办法]

探讨
嘿嘿,很有意义的讨论!

应该是getitemxxx()快些吧。不过本人比较懒,平常都是用object.xxx,打代码时快些。惭愧。

To yyoinge:
ls = dw_1.getitemstring(1, 'a'),其中的1是笔误吧?如果是测试的代码,得改成ls = dw_1.getitemstring(i, 'a')再测试下,结果才更实在。

[解决办法]
yyoinge正解,按理论上来,getitem应该快点的,不过没有测试过。。。
[解决办法]
如果数据量小 两种差距感觉不出来
如果数据量特别大 需要循环挨个取的话 还是得做成后台处理或其他方式 总不能给客户个死机状界面 那时间多点少点 也无所谓了
[解决办法]
使用object.data是好,又快又有一般性。

一整列可以

dwobject dwo

dwo=object.__get_attribute("字段名",false)

dwo.primary 也有一般性,且速度快。

getitem的缺点是要分类型处理
[解决办法]
都是高手呀,受教了

读书人网 >PB

热点推荐