Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: ldy

[分享] [原创]一句优化代码 取得 CUP 序列号

[复制链接]
发表于 2007-7-31 09:25 | 显示全部楼层

QUOTE:
以下是引用hhzjxss在2007-7-31 9:16:03的发言:我说呢,怎么我去掉  Dim cpuSet As SWbemObjectSet和  Dim cpu As SWbemObject反而可以运行了!

嗯,是不需要.

如果Option Explicit 可以简单地声明一下Dim ... (as object)

回复

使用道具 举报

发表于 2007-7-31 09:33 | 显示全部楼层
回复

使用道具 举报

发表于 2007-7-31 09:39 | 显示全部楼层

QUOTE:
以下是引用hhzjxss在2007-7-31 9:33:17的发言:

怎么运行一次会给出两个CPU号呢?

呵呵,是这样.这段代码是搜来的,我对wmi的使用也不懂

回复

使用道具 举报

 楼主| 发表于 2007-7-31 09:58 | 显示全部楼层

用兄的代码和我的用于 AMD 的 一样OK

两个代码开后首次运行耗时相同,

不同的是 优化过的代码以后的每次运行速度快了许多。大约快50倍

关键在这一句 Select rocessorId From Win32_Processor

而一般的例子是这样的Select * From Win32_Processor

感觉像ADO语句 于是加了 ProcessorId 居然成功。

返回的内容少了自然就快了

回复

使用道具 举报

 楼主| 发表于 2007-7-31 10:03 | 显示全部楼层

QUOTE:
以下是引用hhzjxss在2007-7-31 9:33:17的发言:

怎么运行一次会给出两个CPU号呢?

用版的代码实际是两个例子,

  Debug.Print GetObject("winmgmts:").InstancesOf("Win32_Processor")("Win32_Processor.DeviceID='CPU0'").processorid

返回第一个CPUID

 

 

  Set cpuSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Processor")
  For Each cpu In cpuSet
    Debug.Print cpu.processorid
  Next

返回所有CPUID

一般机子都只有一个CPU 所以这两段代码所返回的结果一样。

 

回复

使用道具 举报

发表于 2011-2-28 19:27 | 显示全部楼层
谢谢分享  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-5 01:58 , Processed in 0.353796 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表