我需要一些易于实现的单个cpu和内存密集型计算,我可以在java中为测试线程调度程序编写。
它们应该耗费一些时间,但更重要的是消耗资源。
有什么想法吗?
答案 0 :(得分:23)
CPU密集型任务的一些简单示例:
答案 1 :(得分:6)
将两个矩阵相乘。矩阵应该很大并存储在磁盘上。
字符串搜索。或者,索引一个巨大的文档(检测并计算每个单词或字母串的出现)例如,您可以索引大型软件项目的源代码中的所有标识符。
计算pi。
旋转2D矩阵或图像。
压缩一些大文件。
...
答案 2 :(得分:6)
PDP-11的CPU浸泡测试是tan(atan(tan(atan(...)))
等。非常努力地工作FPU以及堆栈和寄存器。
答案 3 :(得分:4)
答案 4 :(得分:3)
计算斐波那契数列的第n项,其中n大于70.(耗时)
计算大数的阶乘。 (耗费时间)
找到所有可能的 两个节点之间的路径,在图中。 (记忆消耗)
答案 5 :(得分:1)
答案 6 :(得分:0)
我在Java中使用Thread优先级并使用下面的代码。它似乎让CPU足够繁忙,线程优先级有所不同。
@Test
public void testCreateMultipleThreadsWithDifferentPriorities() throws Exception {
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i=0; i<1_000_000; i++) {
double d = tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(123456789.123456789))))))))));
cbrt(d);
}
LOGGER.debug("I am {}, and I have finished", Thread.currentThread().getName());
}
}
final int NUMBER_OF_THREADS = 32;
List<Thread> threadList = new ArrayList<Thread>(NUMBER_OF_THREADS);
for (int i=1; i<=NUMBER_OF_THREADS; i++) {
Thread t = new Thread(new MyRunnable());
if (i == NUMBER_OF_THREADS) {
// Last thread gets MAX_PRIORITY
t.setPriority(Thread.MAX_PRIORITY);
t.setName("T-" + i + "-MAX_PRIORITY");
} else {
// All other threads get MIN_PRIORITY
t.setPriority(Thread.MIN_PRIORITY);
t.setName("T-" + i);
}
threadList.add(t);
}
threadList.forEach(t->t.start());
for (Thread t : threadList) {
t.join();
}
}