Foxtable(狐表)用户栏目专家坐堂 → 运算速度问题


  共有12497人关注过本帖树形打印复制链接

主题:运算速度问题

帅哥哟,离线,有人找我吗?
zxyds2000
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:230 积分:2073 威望:0 精华:0 注册:2011/4/22 16:41:00
运算速度问题  发帖心情 Post By:2011/12/21 10:12:00 [只看该作者]

    为了补充商业软件的功能缺欠,我设计一个程序,从商业软件的数据库中读取数据,然后把数据的内容全部写到一组空表中,然后再进行计算处理,这样做是怕由于误操作导致原来商业软件中的数据被破坏。

    我的问题是:在往空表中写数据时耗时太长,更新一次大约需要半个小时(大约10个表,相互之间有关联计算),这样很难做到随时更新。我的硬件系统是intel双核2G,1G内存,但是我看了一下,系统运算时CPU占用只到50%,内存占用只有800M,请各位专家诊断一下是硬件问题,还是算法问题,有没有提高速度的办法。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/21 10:16:00 [只看该作者]

代码的质量好坏,速度相差可以上千倍。

帮助有一章讲述这个,建议从这一节开始看看:

http://www.foxtable.com/help/topics/2226.htm

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
zxyds2000
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:230 积分:2073 威望:0 精华:0 注册:2011/4/22 16:41:00
  发帖心情 Post By:2011/12/21 10:31:00 [只看该作者]

代码大至如下:

        Dim QDdr As DataRow
        Dim QDi As Integer
        Dim QDj As Table = Tables("ProductStructures")
        With DataTables("C_WLQD")
           .DataRows.Clear() 

        End With
        For QDi = 0 To QDj.Rows.Count -1
           QDdr = DataTables("ProductStructures").DataRows(QDi) 

           Dim QDr As Row = Tables("C_WLQD").Rows.AddNew()
           QDr("母件编码") = QDdr("cPSPCode")
           QDr("子件编码") = QDdr("cPSCode")
           QDr("子件名称") = QDdr("存货名称")
           QDr("规格型号") = QDdr("规格型号")
           QDr("计量单位") = QDdr("计量单位")
           QDr("定额含量") = QDdr("直接数量")
           QDr("计划单价") = QDdr("计划单价")
           QDr("金额") = QDdr("金额")
        Next


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6831 积分:43213 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/21 11:06:00 [只看该作者]

以下是引用zxyds2000在2011-12-21 10:12:00的发言:

    为了补充商业软件的功能缺欠,我设计一个程序,从商业软件的数据库中读取数据,然后把数据的内容全部写到一组空表中,然后再进行计算处理,这样做是怕由于误操作导致原来商业软件中的数据被破坏。

    我的问题是:在往空表中写数据时耗时太长,更新一次大约需要半个小时(大约10个表,相互之间有关联计算),这样很难做到随时更新。我的硬件系统是intel双核2G,1G内存,但是我看了一下,系统运算时CPU占用只到50%,内存占用只有800M,请各位专家诊断一下是硬件问题,还是算法问题,有没有提高速度的办法。

1、为什么不在“商业软件的数据库”直接计算?

2、解决方法:直接导入数据,是不是快些?


 回到顶部
帅哥哟,离线,有人找我吗?
zxyds2000
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:230 积分:2073 威望:0 精华:0 注册:2011/4/22 16:41:00
  发帖心情 Post By:2011/12/21 11:11:00 [只看该作者]

在“商业软件的数据库”中直接计算不安全,我试试直接导入数据。谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/21 11:13:00 [只看该作者]

加上两行会快一些:
 
Dim QDdr As DataRow
Dim QDi As Integer
DataTables("C_WLQD").StopRedraw
With DataTables("C_WLQD")
    .DataRows.Clear()
End With
For Each QDdr In DataTables("ProductStructures").DataRows
    Dim QDr As Row = Tables("C_WLQD").Rows.AddNew()
    QDr("母件编码") = QDdr("cPSPCode")
    QDr("子件编码") = QDdr("cPSCode")
    QDr("子件名称") = QDdr("存货名称")
    QDr("规格型号") = QDdr("规格型号")
    QDr("计量单位") = QDdr("计量单位")
    QDr("定额含量") = QDdr("直接数量")
    QDr("计划单价") = QDdr("计划单价")
    QDr("金额") = QDdr("金额")
Next
DataTables("C_WLQD").ResumeRedraw
 
如果速度还是不快,可以看看这个:

http://www.foxtable.com/help/topics/1935.htm


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/21 11:19:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6831 积分:43213 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/21 11:53:00 [只看该作者]

以下是引用zxyds2000在2011-12-21 11:11:00的发言:
在“商业软件的数据库”中直接计算不安全,我试试直接导入数据。谢谢!

如何不安全,说说看?


 回到顶部
帅哥哟,离线,有人找我吗?
zxyds2000
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:230 积分:2073 威望:0 精华:0 注册:2011/4/22 16:41:00
  发帖心情 Post By:2011/12/21 14:13:00 [只看该作者]

我尝试直接导入数据,我的外部数据来自sq server2005数据库,数据源路径怎么设置?是链接字符串吗?


 回到顶部
帅哥哟,离线,有人找我吗?
zxyds2000
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:230 积分:2073 威望:0 精华:0 注册:2011/4/22 16:41:00
  发帖心情 Post By:2011/12/21 14:16:00 [只看该作者]

另外,导入格式怎么指定?

 回到顶部
总数 11 1 2 下一页