Автор Тема: Задачка на сортировку файла  (Прочитано 21195 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Задачка на сортировку файла
« Ответ #45 : Декабрь 03, 2012, 07:05:31 pm »
Пока результаты такие (под linux'ом конечно же).
Версия gcc: 4.7.0
Версия Lua: Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio

Опции компиляции: -O3 std=c++11
Размер бинарника: 20731 байт.
После strip'a: 14516 байт (то есть 14 Кб).

Производительность (твой конфиг на 30 метров):
$ time ./a.out < conf.txt > /dev/null

real    0m3.362s
user    0m3.224s
sys     0m0.128s

$ time lua ilovb.lua  < conf.txt > /dev/null

real    0m4.167s
user    0m4.060s
sys     0m0.104s

Плюсы чутка быстрее (при том что в lua сортировка то один фиг сишная).

Попробую ускорить алгоритм методом выше описанным.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #46 : Декабрь 03, 2012, 07:20:29 pm »
Посмотрел на твой код еще раз и вдруг вспомнил что в Lua управляющие символы как в Си  :D
Короче заменил паттерн "%s+" на "\t+" и результат стал практически как у тебя.
Единственное отличие вот:
http://hostingkartinok.com/show-image.php?id=d2936c0638988e42f01e820c7902ec79

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #47 : Декабрь 03, 2012, 07:40:02 pm »
Пока результаты такие (под linux'ом конечно же).
У меня такие.

твоя прога (файл 20МБ ANSI) компиленная mingw в ST2 с настройками по умолчанию
ETime(   0:00:06.369 ) UTime(   0:00:06.084 ) KTime(   0:00:00.265 )
ITime(   0:00:00.000 )

моя прога (файл 34МБ UTF-8) компиленная luac:
ETime(   0:00:03.675 ) UTime(   0:00:03.260 ) KTime(   0:00:00.358 )
ITime(   0:00:00.000 )

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #48 : Декабрь 03, 2012, 07:54:34 pm »
Перекомпилил твою прогу с опциями -O3 -std=c++11
Бинарник стал на ~100КБ меньше

Время выполнения стало таким:
ETime(   0:00:05.406 ) UTime(   0:00:05.194 ) KTime(   0:00:00.202 )
ITime(   0:00:00.000 )

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Задачка на сортировку файла
« Ответ #49 : Декабрь 03, 2012, 08:00:43 pm »
я тестил на utf8 в линуксе.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #50 : Декабрь 03, 2012, 08:03:30 pm »
Тык она и на UTF-8 работает?! А говорил на однобайтовых...

Вот прогнал на UTF-8:
ETime(   0:00:08.679 ) UTime(   0:00:08.314 ) KTime(   0:00:00.327 )
ITime(   0:00:00.000 )

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #51 : Декабрь 03, 2012, 08:07:34 pm »
Но явно че то не то...
У меня компайлер GCC 4.7.2
бинарник с твоими опциями 1,31МБ получается...
а у тебя 20731 байт...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Задачка на сортировку файла
« Ответ #52 : Декабрь 03, 2012, 08:07:46 pm »
Тык она и на UTF-8 работает?! А говорил на однобайтовых...
Это зависит от локали. За винду ничего сказать не могу - она слишком загадочная.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #53 : Декабрь 03, 2012, 08:10:28 pm »
Если что у меня вот эта хрень стоит:
http://nuwen.net/mingw.html
Цитировать
mingw-9.4-without-git.exe (19.4 MB) : This is smaller, if you've already installed git.

Lua вот эта:
http://code.google.com/p/luaforwindows/
« Последнее редактирование: Декабрь 03, 2012, 08:12:03 pm от ilovb »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #54 : Декабрь 03, 2012, 08:14:28 pm »
Время замерял этим:
http://www.microsoft.com/en-us/download/details.aspx?id=17657

Цитировать
Ntimer.exe: Windows Program Timer

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #55 : Декабрь 03, 2012, 08:20:13 pm »

ntimer sort_conf2.exe < c:\ОтчетПоКонфигурации.txt > c:\ОтчетПоКонфигурации2_sort.txt

ntimer lua sort_conf.luac < c:\ОтчетПоКонфигурации.txt > c:\ОтчетПоКонфигурации_sort.txt

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Задачка на сортировку файла
« Ответ #56 : Декабрь 03, 2012, 08:26:40 pm »
Отрезал у своей проги все кроме построчного чтения:
int main()
{
    string line;
    while (getline(cin, line)) {
    }
    return 0;
}
результат:
$ time ./a.out  < conf.txt > /dev/null

real    0m2.535s
user    0m2.520s
sys     0m0.016s
Так что основной тормоз, как я и говорил, во вводе.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #57 : Декабрь 03, 2012, 08:31:47 pm »
C:\sources>ntimer lua test.luac < c:\ОтчетПоКонфигурации.txt

file = io.input()
file:seek('set', 3)
for line in file:lines() do
    --print(line)
end

ETime(   0:00:00.466 ) UTime(   0:00:00.421 ) KTime(   0:00:00.046 )
ITime(   0:00:00.000 )

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Задачка на сортировку файла
« Ответ #58 : Декабрь 03, 2012, 08:35:56 pm »
C:\sources>ntimer lua test.luac < c:\ОтчетПоКонфигурации.txt

file = io.input()
file:seek('set', 3)
for line in file:lines() do
    --print(line)
end

ETime(   0:00:00.466 ) UTime(   0:00:00.421 ) KTime(   0:00:00.046 )
ITime(   0:00:00.000 )

У меня те же цифры если использовать старый добрый scanf ;-)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Задачка на сортировку файла
« Ответ #59 : Декабрь 03, 2012, 09:08:29 pm »
Отрезал у своей проги все кроме построчного чтения:
int main()
{
    string line;
    while (getline(cin, line)) {
    }
    return 0;
}
результат:
$ time ./a.out  < conf.txt > /dev/null

real    0m2.535s
user    0m2.520s
sys     0m0.016s
Так что основной тормоз, как я и говорил, во вводе.

Ога
ETime(   0:00:07.442 ) UTime(   0:00:07.394 ) KTime(   0:00:00.031 )
ITime(   0:00:00.000 )
размер бинаря 1,3МБ  ;D