Очень разное время выполнения

Модератор: Модераторы разделов

Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Очень разное время выполнения

Сообщение Devider »

Изучаю руби. Накидал как мог программку для решения судоку (конструктивная критика, кстати, приветствуется). Проблема в том, что она выполняется 3 секунды на том компе где я ее писал. Это Sempron 64 LE-1150 с 1 гигом оперативки с linux mint Maya x32 с XFCE. Запустил на домашней машине, выполнилось меньше чем за 0.1 сек. Версия рубей везде одинаковая. Как вообще получается такая разница?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Очень разное время выполнения

Сообщение SLEDopit »

Devider
А железный конфиг домашней машины вы не покажете?
Фоновые процессы какие-нибудь работали?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Очень разное время выполнения

Сообщение Devider »

SLEDopit писал(а):
09.01.2014 21:37
Devider
А железный конфиг домашней машины вы не покажете?
Фоновые процессы какие-нибудь работали?

Дома чуть получше, но далеко не Тяньхэ-2.
AMD FX-4100, 16GB, На работе i5 c 8 га с сопоставимым результатом (около 0.15 сек). Проблема с тем семпроном. Фоновых процессов не замечено.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Очень разное время выполнения

Сообщение azsx »

я, конечно, программу даже открывать не стал, но обратите внимание. У вас явно геометрическая прогрессия по скорости выполнения и колличеству оперативной памяти. Наверное, в теле программы задаются большие массивы, которые если есть оперативка - грузятся туда; а если нет - идет через файл подкачки.
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Очень разное время выполнения

Сообщение Devider »

Запустил на виртуалке:
$ ~/sudoku-master $ cat /proc/cpuinfo | grep 'model name'
model name : Intel® Core™ i5-3330 CPU @ 3.00GHz
$ ~/sudoku-master $ free
total used free shared buffers cached
Mem: 507512 497580 9932 0 20036 202460
-/+ buffers/cache: 275084 232428
Swap: 1046524 0 1046524
$ ~/sudoku-master $ time ruby resolver.rb


2 5 8 1 9 7 3 6 4
3 7 9 5 4 6 2 1 8
6 1 4 3 2 8 7 5 9

7 4 1 6 5 2 8 9 3
9 2 6 8 1 3 5 4 7
8 3 5 9 7 4 6 2 1

1 6 2 7 3 9 4 8 5
5 8 7 4 6 1 9 3 2
4 9 3 2 8 5 1 7 6

real 0m0.197s
user 0m0.040s
sys 0m0.048s

В общем, что-то не так с тем конкретно компом. Что именно, наверное, так и останется тайной.
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Очень разное время выполнения

Сообщение Женя Подсыпальников »

А межстрочный трэйсинг системного времени в файл - в Руби - бывает ?

Такие два файла можно сравнить по межстрочным разницам,
чтобы найти места, ответственные за тормоза :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Очень разное время выполнения

Сообщение Devider »

Женя Подсыпальников писал(а):
10.01.2014 11:34
межстрочный трэйсинг системного времени

Первый раз про такое слышу. А где такое есть?
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Очень разное время выполнения

Сообщение Женя Подсыпальников »

Вот тут , где 164 человека большой палец подняло -
можно вывести не только текст "начало цикла" но и время в миллисекундах для этого начала, потом - для конца.

Сначала - грубо, поделив текст программы на 4 части, потом - детальнее ту часть, где тормозит и.т.д.

Постепенно открываем для себя инструкцию, ответственную за различное время исполнения на различных процессорах.
Некоторые процессоры, могут с дробями лучше работать, например. У Вас там дробей нету в программе ?

А получить время в миллисекундах - на Руби - возможно ? :)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Очень разное время выполнения

Сообщение Devider »

Женя Подсыпальников писал(а):
10.01.2014 12:29
Вот тут , где 164 человека большой палец подняло -
можно вывести не только текст "начало цикла" но и время в миллисекундах для этого начала, потом - для конца.

Сначала - грубо, поделив текст программы на 4 части, потом - детальнее ту часть, где тормозит и.т.д.

Постепенно открываем для себя инструкцию, ответственную за различное время исполнения на различных процессорах.
Некоторые процессоры, могут с дробями лучше работать, например. У Вас там дробей нету в программе ?

А получить время в миллисекундах - на Руби - возможно ? :)

А, не, это не канает. До того компа больше доступа нет.

Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Очень разное время выполнения

Сообщение Женя Подсыпальников »

// А, не, это не канает. До того компа больше доступа нет.

Если интересно, можно и на доступном посмотреть, где дольше-живее,
но он у Вас слишком быстрый, как я понял...

А без доступа к медленному - можно долго гадать, вообще-то... :)
Пойдём на рыбалку !
Спасибо сказали: