LINUX.ORG.RU

C++ уступает java


0

0

Код #include <stdio.h> #include <conio.h> #include <windows.h> class A { public: double calculate(double p1, double p2) { return (p1 / p2)/(p1+p2); } }; int main() { printf("start...\n"); long t1 = GetTickCount(); double res = 0; for(int i = 0; i < 10000000; i++) { A *a = new A(); res += (a->calculate(i+1, 11)); delete a; } long t2 = GetTickCount() - t1; printf("res = %f, time = %i \n", res, t2); getch(); return 0; }

медленнее чем

public class NewClass { public NewClass() { } public static void main(String[] args) { System.out.println("start..."); double res = 0; long t1 = System.currentTimeMillis(); for(int i = 0; i < 10000000; i++) { res += (new A().calculate(i + 1, 11)); } long t2 = System.currentTimeMillis() - t1; System.out.println("res = " + res + " time = " + t2); } } class A { public double calculate(double p1, double p2) { return (p1 / p2)/(p1+p2); }

anonymous

нихера не понял

можно написать то же самое, но с отступами и без этих дурацких фигурных скобок?

scotinomys
()
Ответ на: комментарий от scotinomys

public class NewClass {
    
    /** Creates a new instance of NewClass */
    public NewClass() {
    }
    public static void main(String[] args) {
        System.out.println("start...");
        double res = 0;
        Random rand = new Random();
        long t1 = System.currentTimeMillis();
    for(int i = 0; i < 10000000; i++) {
        res += (new A().calculate(i + 1, rand.nextFloat() * 100 ));
    }
        long t2 = System.currentTimeMillis() - t1;
        System.out.println("res = " + res + " time = " + t2);
    }
}
class A {
    public double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
}





#include <stdio.h>
#include <conio.h>
#include <windows.h>
class A {
public:
    double calculate(double p1, double p2) {
        return (p1 / p2)/(p1+p2);
    }
};
int main() {
    printf("start...\n");
    long t1 = GetTickCount();
    double res = 0;
    for(int i = 0; i < 10000000; i++) {
        A *a = new A();
        res +=  a->calculate(i+1, ((double) rand()/ (double) RAND_MAX) * 100);
        delete a;
    }
    long t2 = GetTickCount() - t1;
    printf("res = %f, time = %i \n", res, t2);
    getch();
    return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

Как всё сложно.
Давай проще!

int
main(void)
{
    for(;;);
    return 0;
}

и

class A {
    public static void main(String args []) {
        System.out.println("I'm dumn fast, baby!");
    }
}

Компилируем, запускаем, сравниваем время выполнения.
Делаем вывод: Java рулит!

execve
()
Ответ на: комментарий от anonymous

А если серьёзно, то
1). как уже сказали выше, в Java память только выделяется, в C++ за то же самое время и выделяется, и освобождается.
2). rand() в Java и C++ реализованы совершенно по разному и выполняются за разное время.

В сумме это называется НЕКОРРЕКТНЫЙ ТЕСТ.

execve
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.