以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- abcdzabcdz 的【转换遇到问题】速度由30多秒(我的老爷机)提高到2秒以内 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5477) |
-- 作者:mr725 -- 发布时间:2009/12/14 13:59:00 -- abcdzabcdz 的【转换遇到问题】速度由30多秒(我的老爷机)提高到2秒以内 原 附件在 http://www.foxtable.com/dispbbs.asp?boardid=2&Id=5469 中,只是顺序有所不同: DataTables("课时名单").DataRows.Clear() dim x as string for i as integer = 1 to tables("课程表").cols.count -1 x = x & "|" & tables("课程表").cols(i).name dim f As New Filler f.SourceTable = DataTables("课程表") \'指定数据来源 f.SourceCols = "" & tables("课程表").cols(i).name & "" \'指定数据来源列 f.DataTable = DataTables("课时名单") \'指定数据接收表 f.DataCols = "姓名" \'指定数据接收列 f.Distinct = false f.Fill() \'填充数据 next x=x.trim("|") dim n as integer = tables("课程表").cols.count /x.split("|").length for xi as integer = 0 to x.split("|").length-1 for ii as integer = xi*tables("课程表").rows.count to xi*tables("课程表").rows.count+tables("课程表").rows.count-1 tables("课时名单").rows(ii)("星期") = x.split("|")(xi).split("_")(0) tables("课时名单").rows(ii)("计分") = 1 next next Messagebox.Show("处理完毕!") 原代码主要是慢在: ................... Dim drmd As DataRow drmd = DataTables("课时名单").DataRows.AddNew() ‘今后增加行数多时,尽量少用addnew!~ ........................ 只要代码合理,老爷机不是问题~ 估计c版的机子会在1秒以内的。 [此贴子已经被作者于2009-12-14 14:12:19编辑过]
|
-- 作者:baoxyang -- 发布时间:2009/12/14 14:13:00 -- drmd = DataTables("课时名单").DataRows.AddNew() ‘今后增加行数多时,尽量少用addnew! 有同感,用addnew()增加多行确实很慢,如果是SQL Table表增加行时应如何处理?用什么方法可以提高到速度呢?谢谢! |
-- 作者:mr725 -- 发布时间:2009/12/14 14:18:00 -- 以下是引用baoxyang在2009-12-14 14:13:00的发言:
drmd = DataTables("课时名单").DataRows.AddNew() ‘今后增加行数多时,尽量少用addnew! 有同感,用addnew()增加多行确实很慢,如果是SQL Table表增加行时应如何处理?用什么方法可以提高到速度呢?谢谢! 用充填 配合 在被充填表中 for。。。next 计算比较快~ |
-- 作者:狐狸爸爸 -- 发布时间:2009/12/14 15:23:00 -- 神奇的代码 |
-- 作者:baoxyang -- 发布时间:2009/12/14 15:26:00 -- 以下是引用狐狸爸爸在2009-12-14 15:23:00的发言:
神奇的代码 老大,楼主使用方法有提高速度有疑问吗 |
-- 作者:狐狸爸爸 -- 发布时间:2009/12/14 15:32:00 -- 以下是引用baoxyang在2009-12-14 15:26:00的发言:
老大,楼主使用方法有提高速度有疑问吗
|
-- 作者:狐狸爸爸 -- 发布时间:2009/12/14 15:35:00 -- 应该不是AddNew的问题。 批量处理应该用上Redraw |
-- 作者:baoxyang -- 发布时间:2009/12/14 15:38:00 -- 请教下楼主,如果从EXCEL表中的数据导入表中无有好方法提高速度,是用代码编写的,使用AddNew() 来实现的。没有找到好方法。 |
-- 作者:mr725 -- 发布时间:2009/12/14 16:00:00 -- 以下是引用狐狸爸爸在2009-12-14 15:35:00的发言:
应该不是AddNew的问题。 批量处理应该用上Redraw 这个有效果,但是用原有c版的代码也要5、6秒时间,和俺1楼代码比,还是有2、3倍的差距呀~ |
-- 作者:baoxyang -- 发布时间:2009/12/14 16:28:00 -- 用AddNew增加的速度确实较慢,估计增加八十多条记录,需要好几秒时间呀。 |