我做了一个计算程序。如果少量的计算估计用时2分钟,大计算可能要
持续十几分钟。占用的内存也从十几兆到上百兆不等。所以我希望能在计
算完毕之后能统计出程序运行的时间,以及占用内存大小.我应该怎样编写
代码呢?
   望各位朋友能给出具体的代码,便于我尝试,谢谢大家了!

解决方案 »

  1.   

    windows 好像有API函数!!去找找!!!
      

  2.   

    计时方面如果要求精度不太高可以在开始计算前记下now值,再用算完以后的now值去比较。
    内存使用方面使用wmi方法应该比较简单,但内存使用情况每一时刻都不同,如果要得到最大占用内存数又必须定时得到现时的内存数,这样又涉及到是否要在计算过程添加doevents,同时如果读内存的时间间隔太小又怕影响计算的总时间要取得一个平衡
    或者考虑一下多线程。
      

  3.   

    谢谢lsftest()的帮助。我马上试试您说的now能否成功。至于内存占用大小,我不需要在计算过程中也一致统计占用大小,只需要计算完毕之后统计。望能给出统计的具体办法。
    关注大家的帮助,谢谢大家了!
      

  4.   

    我已经尝试过now了,并且还有其他的几个函数可以使用,比如time等。但是我不知道怎样把计算前后的两次得到的时间变量相减求出计算用了的时间。不知道大家能否给出代码来呀?
      

  5.   

    一个简单的例子:
    Private Sub Command3_Click()
    Dim strComputer As String
    Dim objWMIService As Object
    Dim colProcessList
    Dim objProcess As Object
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("select * from win32_process  where processid=1380")
    For Each objProcess In colProcessList
         Debug.Print CStr(objProcess.workingsetsize / 1024) & "K"
    NextEnd Sub上面的代码显示pid为1380的那个进程的即时内存使用情况。。
    不想用pid,用name也可以,改改上面那个查询语句就可以了。
    2000、xp、2003系统可行。。