Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пост превосходства современных ЯП, над олдскульными 
:(
    Опции темы
GoldFinch
Дата 7.1.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  7.1.2010,  15:00 Найти цитируемый пост)
и использующий для этого NumPy

ты в курсе что NumPy написан на С? 
я же написал, что тест должен сравнивать С++ с питоном, а не С++ с С

вариант "такой-то модуль расширения языка на С\С++\Фортране\еще-каком-то-не-питоне догонит код на С++" - не катит.

Добавлено через 11 минут и 28 секунд
Цитата(Void @  7.1.2010,  15:04 Найти цитируемый пост)
90% времени этот тест будет проводить в ядре интерпретатора: операции со строками и словарями.

там тема на 6 страниц - все читать лень, 
не нашел там обоснования что основное время работы программ зависит от скорости обработки данных кодом программы, а не скорости чтения\записи файлов ОС.
PM MAIL ICQ   Вверх
djamshud
Дата 7.1.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Что же делать, если и сам интерпретатор пистона написан на "С\С++\Фортране\еще-каком-то-не-питоне"? Тогда вообще сравнивать нечего?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 7.1.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



djamshud, он может быть написан хоть на асме, хоть использовать JIT-компиляцию с оптимизацией,
но если в процессе выполнения программы выполняется кусок кода скомпилированный другим компилятором для другого языка - производительность этого куска кода говорит только о том, другом языке.
PM MAIL ICQ   Вверх
Void
Дата 7.1.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(GoldFinch @  7.1.2010,  17:40 Найти цитируемый пост)
не нашел там обоснования что основное время работы программ зависит от скорости обработки данных кодом программы, а не скорости чтения\записи файлов ОС. 

Сравни размер обрабатываемого файла и получившееся время. На флопике он лежал, что ли?
Цитата(GoldFinch @  7.1.2010,  18:07 Найти цитируемый пост)
но если в процессе выполнения программы выполняется кусок кода скомпилированный другим компилятором для другого языка - производительность этого куска кода говорит только о том, другом языке. 

Тогда спор лишён смысла.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
GoldFinch
Дата 7.1.2010, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Void, почему лишен смысла? 
нормальное сравнение ЯП, это когда один и тот же алгоритм реализуется на одном (С++) и на другом языке (питон),
а не на одном языке (С++), и на 99% на третьем (С) - там мы сравниваем другую пару языков

Добавлено через 5 минут и 43 секунды
Цитата(Void @  7.1.2010,  16:13 Найти цитируемый пост)
Сравни размер обрабатываемого файла и получившееся время.

http://forum.vingrad.ru/index.php?showtopi...t&p=1403408
там нету единиц измерения времени, я хз, был там флопик или нет. 
в любом случае, если мерять какой-то алгоритм - то не надо мерять время чтения\записи файла.

Это сообщение отредактировал(а) GoldFinch - 7.1.2010, 16:33
PM MAIL ICQ   Вверх
Lazin
Дата 7.1.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



GoldFinch, я предлагал сравнивать не синтетические тесты, понятно, что с++ код будет быстрее сортировать массив в памяти. Я предлагал найти задачу, похожую на реальную, в которой есть хоть какая-то сложность, понятно, что простую задачу можно легко оптимизировать на чем угодно. Но если программа взаимодействует с ОС, использует несколько CPU, прилично засирает хип, использует сторонние библиотеки, то все уже не так просто. smile 
PM MAIL Skype GTalk   Вверх
Void
Дата 7.1.2010, 16:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
почему лишен смысла? 

Потому что любая программа на Питоне всё время, которое она не проводит в системных вызовах и внешних модулях, проводит в интерпретаторе, который написан на Си. Тем самым те себе резервируешь неотразимый аргумент, который, впрочем, только тебя и интересует.
Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
там нету единиц измерения времени

Юпитерианские сутки, что же ещё?
Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
в любом случае, если мерять какой-то алгоритм - то не надо мерять время чтения\записи файла.

А если ввод-вывод идёт вперемежку с вычислениями? А если весь ввод-вывод заключается в печати одной строки? Если ты минимально вчитывался в условие задачи, ты прекрасно себе представляешь соотношение ввода-вывода и прочих затрат при её исполнении, и что time $command — это адекватный способ замера.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Akella
Дата 12.1.2010, 18:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода.

Т.е. я правильно делаю, что пытаюсь изучать джаву?
PM MAIL   Вверх
RockClimber
Дата 12.4.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода.

Пока ты тут в очередной раз хоронишь Delphi и С++ (а некоторые утверждают, что это "похороны" длятся уже лет 10), на sql.ru уже на полном серьезе обсудили тему перспективы Java. До конца я не дочитал, но где-то в середине джаву на полном серьезе кто-то пытался хоронить  smile 

Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%

Вот тебе практическая задача: перепиши Open Office Calc (он же на java написан?), чтобы он не отставал по производительности от Excel (он же на С написан?) намного более, чем на 25%. Куча благодарных потомков тебе обеспечена. Ну а пока в плане скорости и юзабилити OO - полное УГ.


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
kemiisto
Дата 12.4.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Open Office Calc (он же на java написан?)

Нет. На ++. Тут список того, что в OpenOffice.org написано на Java. Не веришь - скачай сорцы.

Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Excel (он же на С написан?)

Вот уж не думаю. Тоже на ++, стоит думать.

Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Ну а пока в плане скорости и юзабилити OO - полное УГ.

Тупой пример. Ты тогда должен написать тулзу по скорости сравнимую с MS Office.

RockClimber, ты не понял. Речь шла о том, что на С++ можно написать менее требовательное к ресурсам и более быстро работающее приложение. Но в очень редких случаях, командой опытных специалистов за долгие годы. 

Хочешь померяться - ради бога (только Lazin'а найди). А ребят из MS не приплетай. Не о них речь.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
RockClimber
Дата 12.4.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Нет. На ++. Тут список того, что в OpenOffice.org написано на Java. Не веришь - скачай сорцы.
Верю. Я в историю вопроса не влезал, просто такое впечатление сложилось, что OO написан на java.

Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Тоже на ++, стоит думать.
Это не важно, С++ Lazin тоже хоронит.

Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Хочешь померяться - ради бога (только Lazin'а найди). А ребят из MS не приплетай. Не о них речь.
Я - ни в коем случае не хочу ничем ни с кем меряться. Просто Lazin утверждал, что может писать эффективный код, и просил пример задачи из жизни. Ну вот пусть и уделает M$ на самой что ни на есть жизненной задаче, раз уж ему известны секреты эффективного написания алгоритмов.



--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
kemiisto
Дата 12.4.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(RockClimber @  12.4.2010,  16:44 Найти цитируемый пост)
сто Lazin утверждал, что может писать эффективный код, и просил пример задачи из жизни. Ну вот пусть и уделает M$ на самой что ни на есть жизненной задаче, раз уж ему известны секреты эффективного написания алгоритмов.

Блин, ну нельзя же доводить до абсурда. Группа разработчиков MS Office за 20 лет и море баксов против одного программиста за малое время бесплатно. Смысл?

Поэтому он и предложил "померяться" 1-on-1 на какой-нибудь небольшой задаче. Чтобы решалась за обозримое время.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
LamerTM
Дата 12.5.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%, а скорее всего рвет вашу как тузик тряпку xD. Ну и естественно, приложение должно полностью утилизировать современные многоядерные процессоры, а куда без этого?


Если предложение все еще в силе, то вот код, написанный на делфи:

Код

procedure TForm1.Button39Click(Sender: TObject);
var       st: Cardinal;
          i, j, c, py, capacity: Integer;
          gar, u, g1: array1_Integer;
begin
          st := GetTickCount;
          SetLength(gar, 5);
          for i := 0 to 1000 - 1 do
          begin
            capacity := 100;
            SetLength(g1, capacity);
            for j := 0 to 3000 - 1 do
            begin
              if j = capacity then
              begin
                capacity := capacity * 2;
                SetLength(g1, capacity);
              end;
              g1[j] := 1;
            end;
            c := Length(gar);
            py := Length(g1);
            SetLength(gar, c + py);
            CopyMemory(@gar[c], @g1[0], py * 4);
          end;
          st := GetTickCount - st;

          c := 0;
          for i := 0 to Length(gar) - 1 do c := c + gar[i];

          Memo1.Lines.Add('Time='+IntToStr(st));
          Memo1.Lines.Add(IntToStr(c));
end;


Задача реальная. Хотя и сведена к синтетическому тесту.

Это сообщение отредактировал(а) LamerTM - 12.5.2010, 10:34
PM MAIL   Вверх
Shaggie
Дата 12.5.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



LamerTM, в чём заключается реальность задачи? И CopyMemory в 24 строке меня сильно напрягает.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
LamerTM
Дата 12.5.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



Shaggie
Есть функция LoadFile, читающая сжатый файл. При распаковке он превращается в массив структур. Определить размер этого массива заранее нельзя, для этого надо полностью распаковать весь файл. Поэтому по мере распаковки происходит дописывание по одной структуре в массив, а массив при необходимости увеличивается. Все это реализовано в функции, которой передается имя файла, а она возвращает массив распакованных данных.

Есть еще одна функция, которой передается массив из имен файлов. Каждый файл она грузит вызывая функцию LoadFile, получая от нее распакованный массив. После чего она должна все эти массивы состыковать воедино (с некоторым преобразованием, но оно тут не важно).

В коде, что я привел выше, внутренний цикл это имитация загрузки файла в массив, а внешний цикл это имитация слияния массивов в один.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0960 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.