Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Сравнение скорости выполнения


Автор: MAKCim 16.12.2007, 21:33
Код

#!/usr/bin/python

print "Hello, World!"

Код

# times ./test.py
0m0.052s 0m0.036s
0m11.541s 0m1.132s

Код

#include <stdio.h>

int main() {
    puts("Hello, World!");
    return 0;
}

Код

# times ./test
0m0.060s 0m0.036s
0m11.637s 0m1.160s

Код

format ELF64 executable

use64
segment executable readable
    xor    eax, eax
    inc    eax
    xor    edi, edi
    inc    edi
    mov    rsi, string
    mov    edx, SIZE
    syscall
    mov    eax, 60
    syscall
string:
    db  "Hello, World", 10
SIZE = $ - string

Код

# times ./test
0m0.072s 0m0.036s
0m11.669s 0m1.164s

 smile  smile 
я в шоке
кто может объяснить такое?
times глючит?

Автор: nickless 16.12.2007, 22:02
times имхо вообще параметров не берёт, просто выдаёт данные для шелла
Цитата

times  Print the accumulated user and system times for the shell and for processes run from the shell.


Ты попробуй вот так
Код

(./test.py; times)
(./test; times)

Автор: JackYF 16.12.2007, 22:04
MAKCim, а что ты хотел? На "hello world" проверить разность скорости между языками?
Второй и третий варианты вообще почти эквивалентны. А интерпретатор питона молодец.

Автор: Fin 16.12.2007, 22:11
Просто у тебя слишком маленькие программы для сравнения. Тут вступают в силу побочные факторы. Как скоро наступит очередь thread на выполнение и тому подобное. На программах, пожираюших много времени, я думаю, ситуация изменится. В нете недавно муссировалась сенсация, что мол ламборджини обогнала истребитель. Да на малых дистанциях и на земле истребитель тежелее на разгон, но когда он войдет в свой рабочий режим. Он эту ламборджини сделает от нечего делать. Тут примерно такая же ситуация smile

Автор: nickless 16.12.2007, 22:15
MAKCim, кстати, а почему times а не time?

Цитата(JackYF @  16.12.2007,  20:04 Найти цитируемый пост)
Второй и третий варианты вообще почти эквивалентны. А интерпретатор питона молодец. 

Это не время исполнения программ, а время, потраченое шеллом на то, что делал MAKCim до вызова times (включительно) smile

Добавлено @ 22:18
Цитата(Fin @  16.12.2007,  20:11 Найти цитируемый пост)
Просто у тебя слишком маленькие программы для сравнения

Небольшая разница есть smile 
Код

% (./bla.py; times)
Hello, World!
0m0.00s 0m0.00s
0m0.03s 0m0.00s
% (./a.out; times)
Hello, World!
0m0.00s 0m0.00s
0m0.00s 0m0.00s


Добавлено @ 22:19
Код
% time ./bla.py
Hello, World!
./bla.py  0,02s user 0,01s system 80% cpu 0,033 total
% time ./a.out
Hello, World!
./a.out  0,00s user 0,00s system 46% cpu 0,002 total

Автор: MAKCim 16.12.2007, 23:10
Цитата(JackYF @  16.12.2007,  22:04 Найти цитируемый пост)
MAKCim, а что ты хотел? На "hello world" проверить разность скорости между языками?

нет
Цитата(JackYF @  16.12.2007,  22:04 Найти цитируемый пост)
Второй и третий варианты вообще почти эквивалентны

абсолютно не эквивалентны
третий вариант - самое быстрое, что вообще можно написать для вывода строки
прямое обращение к ядру
nickless
да, кажется ты прав
я неправильно times использовал

Добавлено через 8 минут и 18 секунд
Цитата(nickless @  16.12.2007,  22:15 Найти цитируемый пост)
MAKCim, кстати, а почему times а не time?

то, что мне надо было получить, можно было получить как при помощи times, так и при помощи time, но
т. к times - built-in-функция bash-а, она не требует создания нового процесса (в отличие от time, который является внешней программой), а значит выполняется быстрее

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)