kemi (statz) | #2, Főfasz (2970) |
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,1529 Vagy 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 |