小编Bla*_*zer的帖子

双重瓶颈,如何改善呢?

我需要提高以下代码的性能(Intel Ivy Bridge,x64):

unsigned int delta;
unsigned int a[100];
unsigned int b[100];

...

double sum = 0;

for(int i = 0; i < 100; i++)
    sum += (double)b[i]/a[i];

bool possible = delta >= sum;
Run Code Online (Sandbox Code Playgroud)

瓶颈确实是double,并使执行时间增加3倍.a[index]将是从0到500米的任何东西.b[index]将从0到500.

:在对这段代码的两次调用之间如何修改数组a和b?

在每次调用时,唯一的区别是a[index]++;,其中0 <= index < 100b为总是相同的.三角洲也不会改变.

由于结果与另一个数字进行比较并存储为布尔值,我绝对需要尽可能高的精度.这就是为什么我使用双倍而不是浮动的原因.如你所知,即使1/1b的差异也会返回​​错误的值,因为结果是布尔值!

c c++

3
推荐指数
2
解决办法
272
查看次数

C/C++计时器,就像瑞士手表一样

有人可以提供C/C++定时器列表,它们提供了神级准确度吗?

例如,如果我使用100台计算机并在所有计算机中以相同的微秒启动程序,我希望计时器在连续运行一年后在所有计算机上显示相同的时间(具有不同的CPU和不同的CPU负载).

平台:Linux
精度:1秒但计时器必须是1秒,而不是1秒和1/1000000.额外的1/1000000是不可接受的.换句话说,在一年的运行中,甚至连一秒钟的精度都不可接受.

计时器不需要额外的硬件.

Q1:人类制作的最好的计时器是什么,它是免费的(计时,计时器,众多提升计时器之一,还是其他什么?)

Q2:使用这个最好的计时器,使用Ivy Bridge CPU时我可以期待什么样的准确度?

c c++ timer

0
推荐指数
1
解决办法
257
查看次数

保证CPU响应?

注意:我更喜欢C++(下面的代码是C++)但如果有人设法用任何通用语言执行以下操作,我很好.

这是一个想法:

a)计时器启动.
b)功能执行并且总是小于0.1秒.
c)程序休眠直到与开始的时间差恰好为0.1秒.
d)永远重复.

如果睡眠时间略高于0.1秒,比如0.105秒,我每秒失去0.005秒.这个不准确的成本在我的申请中,因为我在一天中失去了:0.005*3600*24 = 432秒.

我的申请是实时申请; 我失去的时间并不重要.


执行:

a)一步很简单,只需设置一个变量x = std::chrono::high_resolution_clock::now(); b)运行函数
c)

while((std::chrono::high_resolution_clock::now()-x).count() < 1000000)
        std::this_thread::sleep_for(std::chrono::nanoseconds(1));
Run Code Online (Sandbox Code Playgroud)

d)只是循环


摘要:

a)我明白,无论如何,我每秒至少会损失1纳秒.
b)阅读完这些文章:第一,第二,我意识到,我的应用程序可能每秒丢失30微秒= 0.00003秒.这意味着,在一天中:0.00003*3600*24 =每天2.592秒.
c)目前使用上面描述的功能,我管理的每天最多损失7分钟.


我真正想做的事情:

我可以访问具有一个限制的服务器:每0.1秒只允许一个请求.如果它需要更少,他们将禁止我.如果我的请求需要更长时间,我下载的数据更少.我的应用程序每0.1秒下载一个文件.如果由于延迟我每天损失432秒,这意味着我可以更多地下载4320个文件.

问:如何在CentOS上实施CPU屏蔽,或其他任何操作系统?

c c# c++ java assembly

0
推荐指数
1
解决办法
196
查看次数

标签 统计

c ×3

c++ ×3

assembly ×1

c# ×1

java ×1

timer ×1