多核CPU利用测试
一直在想程序上是否特意让线程在指定的CPU上去运行,这样可以提高运行效率,所以特地写个代码让CPU使用率画正弦曲线的实验,我使用的是AMD X4 641的CPU,为四核四线程的片子。
代码如下
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <ctime>
#include <windows.h> using namespace std; //得到循环0xFFFFFFFF次用的秒数
unsigned int test()
{
unsigned int c = 0xFFFFFFFF; time_t t1, t2;
time(&t1); for(unsigned int i = ; i < c; i++)
;
time(&t2);
return (unsigned int)(t2 -t1); } #define T 20000 //周期时间 20秒
#define C 100 //采样点时间间隔
#define PI 3.1415 //PI
const unsigned int count = 0xFFFFFFFF / (test() *); //采样间隔可以执行的循环数目
const unsigned int N = T/C; //周期内采样点数目
unsigned int v[N] = { }; //所有采样点连续执行循环数
unsigned int mt[N] = { }; //所有采样点休眠毫秒数 int main()
{
//指定运行CPU
SetThreadAffinityMask(GetCurrentThread(), );
for(int i = ; i < N; i++)
{
double x = * PI * i / N;
double r = (sin(x) + ) / ; mt[i] = C - r * C;
v[i] = r * C * count;
}
for(;;)
{
for(int i = ; i < N; i++)
{
for(int j = ; j < v[i]; j++)
;
Sleep(mt[i]);
}
}
}
不指定CPU,发现,貌似系统会平分一下到第一和第二个CPU的使用
指定在第一个CPU上运行的话,效果如下:
指定运行在第二个CPU上,效果如下:
指定在第三个CPU上运行,效果如下:
指定在第四个CPU上运行的话,效果如下:
如果指定的话,那么会固定使用那个指定的CPU,但是有一点比较纳闷的,指定运行在第一个和第二个上没问题,指定运行在第三个上,不知道运行在哪个上了,而指定运行在第4个上,却运行第3个CPU上,难道是我的CPU有问题,明明是四核四线程的CPU,为什么指定在第3个上,没效果,而指定在第四个上却运行在第3个上呢。
这是AMD的CPU的测试结果,不知道Intel的CPU上是不是一样的效果。
我想换个intel的八核十六线程的CPU,感觉现在这个四核四线程的应付不过来平时的工作了。
等换了八核十六线程的片子以后,再做下测试。
多核CPU利用测试的更多相关文章
- java 多线程 线程池:多核CPU利用ExecutorService newWorkStealingPool; ForkJoinPool线程池 执行可拆分的任务RecursiveAction;RecursiveTask
1,给定并行级别: 1,ExecutorService newWorkStealingPool(int parallelism): 创建持有足够的线程的线程池来支持给定的并行级别,该方法还会使用多个队 ...
- python多线程为什么不能利用多核cpu
GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题.运行下面这段 python 程序,CPU 占用率是多少? # 请勿在工作 ...
- python多线程不能利用多核cpu,但有时候多线程确实比单线程快。
python 为什么不能利用多核 CPU GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁. 1.最开始时候设计GIL是 ...
- python学习笔记(二十九)为什么python的多线程不能利用多核CPU
问题:为什么python的多线程不能利用多核CPU,但是咱们在写代码的时候,多线程的确是在并发,而且还比单线程快原因:因为GIL,python只有一个GIL,运行python时,就要拿到这个锁才能执行 ...
- 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并 ...
- <转>如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
原文链接:http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB) ...
- 如何利用多核CPU来加速你的Linux命令
原文出处: rankfocus 译文出处: 外刊IT评论 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能 ...
- 转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或 ...
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等(转)
你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, ...
随机推荐
- JAVA NIO 简介(转)
1. 基本 概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. 所有语言运行时系统提供执行 I/O 较高级 ...
- maven jetty
父项目: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons- ...
- java工作流bpm开发ERP实例
今天看了一个java工作流bpm开发ERP的例子,文章介绍:http://tech.it168.com/a2009/0507/275/000000275294_14.shtml 增加数据块 一路照做就 ...
- warning: Could not canonicalize hostname: vpn
warning: Could not canonicalize hostname: vpn vim /etc/hosts 127.0.0.1 hostname
- redis合库
玩家数据全部保存在redis,对合服来绝对是个坑.因为一直都是做开发,合库这事还是第一次操作. 首先,合服要做哪些事情,当然不同的游戏肯定不一样.合服的目的是为了增加同个服务器上活跃玩家的数量.合服有 ...
- awr报告
BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();END;/ exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ...
- sqlserver使用OpenQuery或OPENROWSET遇到的问题
OpenQuery,OPENROWSET允许用户在链接服务器上查询.通过这种方法来得到查询的结果集. 1.在创建存储过程中,必须设置 SET ANSI_NULLS ...
- composer安装第三方库
生成composer.json 首先需要安装composer,composer -v出现如下,则表明安装成功. 编写composer.json { "name": "ww ...
- 隐式intent
使用隐式Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动, 这里我们首先指定了Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的 ...
- Java程序员也应该知道的系统知识系列之(网卡,cpu,内存,硬盘,虚拟化)
https://yq.aliyun.com/articles/1718?spm=5176.100240.searchblog.16.UaGd04 https://yq.aliyun.com/artic ...