[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 fastslz 于 2011-6-17 11:33 编辑

我也来一个vbs的
cn-dos旧作
  1. 'CPU 基准测试+信息查询,好玩又防奸商,去电脑城选电脑带上一个吧!CPU信息一目了然。
  2. 'CPUtest.vbs BY: fastslz   http://bbs.cn-dos.net  http://bbs.bathome.net
  3. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  4. Set CPUs = objWMIService.InstancesOf("Win32_Processor")
  5. Set Caches = objWMIService.InstancesOf("Win32_CacheMemory")
  6. For Each ObjCache In Caches
  7.     Select Case objCache.Level
  8.     case 3
  9.     aUsage = "一级缓存: " & objCache.MaxCacheSize & "KB    (一级数据+L1缓存)"
  10.     case 4
  11.     aUsage = aUsage & vbCrLf & "二级缓存: " & objCache.MaxCacheSize & "KB"
  12.     case 5
  13.     aUsage = aUsage & vbCrLf & "三级缓存: " & objCache.MaxCacheSize & "KB"
  14.     End Select
  15. Next
  16. For Each ObjCPU In CPUs
  17. Usage = "CPU 名称: " & ltrim(ObjCPU.Name)               & Chr(9) & vbCrLf _
  18.       & "CPU 构架: " & ObjCPU.Description               & vbCrLf _
  19.       & "制造厂商: " & ObjCPU.Manufacturer              & vbCrLf _
  20.       & "接口规格: " & ObjCPU.SocketDesignation         & vbCrLf _
  21.       & "核心数量: " & ObjCPU.NumberOfCores             & vbCrLf _
  22.       & "地址位宽: " & ObjCPU.AddressWidth & " Bit"     & vbCrLf _
  23.       & "数据位宽: " & ObjCPU.DataWidth & " Bit"        & vbCrLf _
  24.       & "CPU 电压: " & ObjCPU.CurrentVoltage / 10 & "V" & vbCrLf _
  25.       & "主频速度: " & ObjCPU.CurrentClockSpeed & "MHZ" & vbCrLf _
  26.       & "总线速度: " & ObjCPU.ExtClock & "MHZ"          & vbCrLf & aUsage
  27. Next
  28. If (Lcase(Right(Wscript.FullName,11)) = "wscript.exe") Then
  29.     MsgBox Usage , vbInformation ,"CPU 基准测试"
  30.     Else
  31.     WScript.Echo Usage
  32. End If
  33. Dim I,T1,T2,Tempvalue,aRunTime,bRunTime
  34.     T1 = Timer()
  35.     For I = 1 To 2000000
  36.         Tempvalue= 2^0.5
  37.     Next
  38.     T2 = Timer()
  39.     aRunTime = FormatNumber((T2-T1)*1000,2)
  40. NumMsg = "CPU 200万次开方计算所需时间:" &aRunTime&" 毫秒" &Chr(9)
  41.     T1 = Timer()
  42.     For I = 1 To 6000000
  43.         Tempvalue= 1 + 1
  44.     Next
  45.     T2 = Timer()
  46.     bRunTime = FormatNumber((T2-T1)*1000,2)
  47. NumMsg =  NumMsg & vbCrLf & "CPU 600万次加法计算所需时间:"&bRunTime&" 毫秒" &Chr(9)
  48. If (Lcase(Right(Wscript.FullName,11)) = "wscript.exe") Then
  49.     MsgBox NumMsg , vbInformation ,"CPU 基准测试"
  50.     Else
  51.     WScript.Echo NumMsg
  52. End If
复制代码

TOP

plp626 兄
在Windows7 64bit Q8300(四核CPU)环境下,经过多次测试发现cmd wscript cscript在不调用外部命令的情况下CPU占用始终保持在25%,甚至只使用一个线程(核心),之前你写的圆周率计算的代码更奇怪一个
核心CPU占用95%其它3个核心空闲中,这个情况何解?
http://bbs.bathome.net/viewthread.php?tid=3437

TOP

5# plp626


是啊、可以猜测一下
cmd+系统自带外部命令 单线程、多个线程
cmd+内部命令  只能是单线程

建议改进下代码,测试每秒能运算圆周率小数点位数

TOP

不知道怎么回事,今天怎么测试8楼的也不报错了,见鬼了
  1. cff.bat "rem";"break";"popd";"set var=^!random^!";"call set a=1";"for /f %a in ("abcdef")do set str=%a";"setlocal&endlocal";"find /?>nul";"findstr /?>nul"
复制代码
Microsoft Windows [版本 6.1.7601]
Intel(R) Core(TM)2 Quad CPU    Q8300  @ 2.50GHz
NUMBER_OF_PROCESSORS=4
------------ CMD指令测试 -------------
"rem"                                 @ 531359.4 Hz
"break"                               @  25579.1 Hz
"popd"                                @  25579.1 Hz
"set var=!random!"                    @  17052.7 Hz
"call set a=1"                        @    947.5 Hz
"for /f %a in ("abcdef")do set str=%a @  17540.0 Hz
"setlocal&endlocal"                   @   5670.3 Hz
"find /?>nul"                         @    138.7 Hz
"findstr /?>nul"                      @    172.0 Hz

Microsoft Windows XP [版本 5.1.2600]
Intel(R) Core(TM)2 Quad CPU    Q8300  @ 2.50GHz
NUMBER_OF_PROCESSORS=4
------------ CMD指令测试 -------------
"rem"                                 @ 531359.4 Hz
"break"                               @ 158538.7 Hz
"popd"                                @ 158538.7 Hz
"set var=!random!"                    @  55831.8 Hz
"call set a=1"                        @   1804.7 Hz
"for /f %a in ("abcdef")do set str=%a @  63002.5 Hz
"setlocal&endlocal"                   @  18055.8 Hz
"find /?>nul"                         @     63.3 Hz
"findstr /?>nul"                      @     63.3 Hz

可见WinXP和Win7 cmd执行效率差异和大

TOP

本帖最后由 fastslz 于 2011-6-19 19:47 编辑

Microsoft Windows [版本 6.1.7601]
Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz
NUMBER_OF_PROCESSORS=4
------------ CMD指令测试 -------------
"rem"                                 @ 531359.4 Hz
"break"                               @  58490.4 Hz
"popd"                                @  68252.7 Hz
"set var=!random!"                    @  22737.0 Hz
"call set a=1"                        @    692.5 Hz
"for /f %a in ("abcdef")do set str=%a @  26691.3 Hz
"setlocal&endlocal"                   @   7290.4 Hz
"find /?>nul"                         @    122.8 Hz
"findstr /?>nul"                      @    153.5 Hz


Microsoft Windows XP [版本 5.1.2600]
Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz
NUMBER_OF_PROCESSORS=4
------------ CMD指令测试 -------------
"rem"                                 @ 634203.2 Hz
"break"                               @ 153584.3 Hz
"popd"                                @ 182025.9 Hz
"set var=!random!"                    @  66408.1 Hz
"call set a=1"                        @   3179.1 Hz
"for /f %a in ("abcdef")do set str=%a @  74457.5 Hz
"setlocal&endlocal"                   @  10223.3 Hz
"find /?>nul"                         @     29.6 Hz
"findstr /?>nul"                      @     30.4 Hz
还得改进
i3 M370是双核心4线程
NUMBER_OF_PROCESSORS其实是线程数
wmic cpu get NumberOfCores这个是核心数
再增加64bit 或32bit系统
wmic cpu get AddressWidth 或set PROCESSOR_ARCHITECTURE
从上面的数据可以看出原生4核和4线程还是有区别的,xp下外部命令效率提示很明显
  1. @echo off
  2. for /f "delims=" %%i in ('wmic cpu get name^,AddressWidth^,NumberOfCores^,NumberOfLogicalProcessors /Value') do set "%%i">nul
  3. echo %Name%
  4. echo 核芯数 %NumberOfCores%
  5. echo 线程数 %NumberOfLogicalProcessors%
  6. echo %AddressWidth% Bit
  7. ver
复制代码

TOP

返回列表