所以我有两个程序做同样的事情,一个用 C 编写,另一个用 Java 编写。它们都创建 50 个线程并等待所有线程完成,然后终止。
为了了解两个程序之间的时间差,我在 Linux 中使用“time”命令来获取执行时间。
对于 C 程序,总执行时间为 0.020 秒,而 Java 版本则需要 0.663 秒才能完成。
我尝试寻找答案,但我发现的只是一些文章,例如(这 两篇)说 Java 实际上比 C 更快,我认为这是无稽之谈,所以如果有人能为我澄清这一点,我将非常感激。
谢谢。
这就是 C 代码的样子。
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#define N 50
void* tproc(void *arg) {
printf("Thread %d\n", *((int *) arg));
return NULL;
}
int main(int argc, char * argv[]) {
int i;
int targ[N];
pthread_t tid[N];
for(i = 0; i < N; i++) {
targ[i] = i;
if(pthread_create(&(tid[i]), NULL, &tproc, &targ[i]) != 0) {
printf("Can't create thread %d\n", i);
return 1;
}
}
for(i = 0; i < N; i++) {
if(pthread_join(tid[i], NULL) != 0) {
printf("Can't join thread %d\n", i);
}
}
return 0;
}
这就是 Java 代码的样子。
import java.util.concurrent.*;
class MyThread extends Thread {
static final int N = 50 ;
int arg;
public MyThread(int arg) {
this.arg = arg;
}
public void run() {
System.out.println("Thread " + arg);
}
public static void main(String [] args) {
MyThread[] tid = new MyThread [N] ;
for(int i = N-1; i >= 0; i--) {
tid[i] = new MyThread(i);
tid[i].start();
}
for(int i = 0; i < N; i++) {
try { tid[i].join(); }
catch(InterruptedException e) { }
}
}
}
忽然笑
慕容708150
尚方宝剑之说
PIPIONE
相关分类