| kemi (statz) | ![]() #2, Főfasz (2982) |
3382 | #244d | ^ | Idézet | Fri, 15 Mar 2013 22:14:27 +01 |
| 178.164.*.* |
|
*.pool.digikabel.hu |
| Igyekeztem úgy megírni, hogy az összes nyelven ugyanaz legyen. C++-ban, C#-ban, meg Javában lehet a ciklusváltozót inicializáláskor deklarálni, C-ben viszont nem. De ha a többi változó a cikluson belül van deklarálva, akkor 1000*1000 = 1 milliószor fog memóriát lefoglalni, aztán felszabadítani, ha a ciklusokon kívül történik, akkor csak egyszer). C/C++ #include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int table[256];
int i, j, k, r, temp;
for (i = 0; i < 1000; i++) {
for (j = 0; j < 1000; j++) {
for (k = 0; k < 256; k++) table[k] = k;
for (k = 0; k < 256; k++) {
r = rand() & 255;
temp = table[r];
table[r] = table[k];
table[k] = temp;
}
}
}
}C# using System;
class cs {
static void Main() {
Random rand = new Random();
int[] table = new int[256];
int i, j, k, r, temp;
for (i = 0; i < 1000; i++) {
for (j = 0; j < 1000; j++) {
for (k = 0; k < 256; k++) table[k] = k;
for (k = 0; k < 256; k++) {
r = rand.Next(256);
temp = table[r];
table[r] = table[k];
table[k] = temp;
}
}
}
}
}Java package javatest;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rand = new Random();
int[] table = new int[256];
int i, j, k, r, temp;
for (i = 0; i < 1000; i++) {
for (j = 0; j < 1000; j++) {
for (k = 0; k < 256; k++) table[k] = k;
for (k = 0; k < 256; k++) {
r = rand.nextInt(256);
temp = table[r];
table[r] = table[k];
table[k] = temp;
}
}
}
}
}PS C:\Users\kemi242\Desktop\csc> measure-command {.\c.exe}
Days : 0
Hours : 0
Minutes : 0
Seconds : 10
Milliseconds : 766
Ticks : 107667192
TotalDays : 0,000124614805555556
TotalHours : 0,00299075533333333
TotalMinutes : 0,17944532
TotalSeconds : 10,7667192
TotalMilliseconds : 10766,7192
PS C:\Users\kemi242\Desktop\csc> measure-command {.\cpp.exe}
Days : 0
Hours : 0
Minutes : 0
Seconds : 10
Milliseconds : 512
Ticks : 105126138
TotalDays : 0,000121673770833333
TotalHours : 0,0029201705
TotalMinutes : 0,17521023
TotalSeconds : 10,5126138
TotalMilliseconds : 10512,6138
PS C:\Users\kemi242\Desktop\csc> measure-command {.\cs.exe}
Days : 0
Hours : 0
Minutes : 0
Seconds : 8
Milliseconds : 175
Ticks : 81750915
TotalDays : 9,46191145833333E-05
TotalHours : 0,00227085875
TotalMinutes : 0,136251525
TotalSeconds : 8,1750915
TotalMilliseconds : 8175,0915
PS C:\Users\kemi242\Desktop\csc> measure-command {java -jar java.jar}
Days : 0
Hours : 0
Minutes : 0
Seconds : 3
Milliseconds : 353
Ticks : 33531529
TotalDays : 3,88096400462963E-05
TotalHours : 0,000931431361111111
TotalMinutes : 0,0558858816666667
TotalSeconds : 3,3531529
TotalMilliseconds : 3353,1529Vagy szar a gcc winfos alatt, vagy én kúrtam el valamit, vagy C#-ban meg Javában agyon van optimalizálva a tömbkeverés. :P |