>>34924
Нет, это неподходящая задача. Она сильно зависит от того, как реализовали в данной конкретной JVM работу с памятью. Под c/c++ есть выбор, как выделять и копировать память (именно память, а не данные), а под явой нет такого выбора. Я имел в виду какую-то реальную задачу: что-то посчитать, что-то обработать и т.п. Выделяет память же все-таки ОС, тут от языка мало, что зависит.
Я потестил, но это результаты, которые ничего на самом деле не говорят (копировал 50 Мб, ибо JVM отказалась давать больше).
Код Java:
public class Main {
public static void main(String[] args) {
final int size = 13107200;
int data[] = new int[size];
int copy_here[] = new int [size];
//first we set some pseudo-data
for(int i = 0; i < size; ++i){
data[i] = i;
}
//copy data
for(int i = 0; i < size; ++i){
copy_here[i] = data[i];
}
}
}
Код C:
#include <stdlib.h>
#include <string.h>
#define SIZE 13107200
int main(){
int* data = malloc(SIZE * sizeof(int));
int* copy_here = malloc(SIZE * sizeof(int));
if(!data || !copy_here) return 1;
//set pseudo-data
for(int i = 0; i < SIZE; ++i)
data[i] = i;
//copy
memcpy((void*)(copy_here), (void*)(data), SIZE * sizeof(int));
return 0;
}
Время Java:
real 0m0.347s
user 0m0.196s
sys 0m0.134s
Время C:
real 0m0.157s
user 0m0.053s
sys 0m0.101s