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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
k0rvin
Дата 12.5.2013, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Athari @  12.5.2013,  16:48 Найти цитируемый пост)
Белтар сначала отказывался вообще читать мой исходник

Ну я в твоем коде тоже не сразу разобрался. =) 

Добавил Go, но он сливает в этом «бенчмарке». =) https://github.com/korvinfn/Tmp-StringBuilderPerf

Добавлено через 1 минуту и 49 секунд
Цитата(Beltar @  12.5.2013,  18:02 Найти цитируемый пост)
и при выборе что писать, консоль или норм. программу с кнопками, я всегда буду делать с кнопками. 

Убивать за такое надо.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Akella
Дата 12.5.2013, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(k0rvin @  12.5.2013,  09:59 Найти цитируемый пост)
Цитата(Akella @  12.5.2013,  09:35 Найти цитируемый пост)
выложите проект куда-нибудь на файлопомойку одним архивом 

Там есть кнопочка Zip.


Нажимаю:
Цитата

Сервер не найден

Firefox не может найти сервер codeload.github.com.


Добавлено через 1 минуту и 47 секунд
Цитата(Beltar @  12.5.2013,  11:45 Найти цитируемый пост)
ты оператор вида a:=b прочитать не можешь?


При чем здесь "не можешь"?  smile 
Дело в читабельности!

Куда читабильнее:  smile 
Код
a := b


Советую почитать статьи про культуру кода, а также посмотреть исходники delphi  smile

Добавлено через 7 минут и 16 секунд
Цитата(Athari @  12.5.2013,  16:48 Найти цитируемый пост)
Мне проект Белтар скинул. У него открывается, у меня открывается, а у Акеллы -- "дпр бредовый"...


я скачал браузером файлы, внутри всех файлов не delphi-код, а HTML
может я неправильно скачал?

Добавлено через 9 минут и 48 секунд
Цитата(Beltar @  12.5.2013,  17:15 Найти цитируемый пост)
а у Акеллы -- "дпр бредовый"


У него D2007.



я щёлкаю по файлу правой кнопкой мышки и выбираю "Сохранить объект как..."

Добавлено через 10 минут и 24 секунды
В итоге скачивается файл с содержимым:

Цитата

<!DOCTYPE html>
<html>
  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Tmp-StringBuilderPerf/Delphi/Unit1.pas at master · korvinfn/Tmp-StringBuilderPerf · GitHub</title>
    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
...
...
...
...

PM MAIL   Вверх
Akella
Дата 12.5.2013, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Beltar @  12.5.2013,  17:15 Найти цитируемый пост)
а у Акеллы -- "дпр бредовый"


У него D2007.


1. С чего ты взял, что у меня нет delphi xe3? врожде нигде об этом не упоминал smile
2. Я открывал и DXE3, и в Notepad++

Я думал, что скачать файл можно, как обычно.
PM MAIL   Вверх
k0rvin
Дата 12.5.2013, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  12.5.2013,  18:35 Найти цитируемый пост)
Нажимаю:
Цитата
Сервер не найден
Firefox не может найти сервер codeload.github.com.


Хз, всегда работало.

Это сообщение отредактировал(а) k0rvin - 12.5.2013, 18:51


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Akella
Дата 12.5.2013, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



user posted image

у всех нормально скачивается файл и только у меня HTML-документ?

Добавлено через 39 секунд
там что, нет возможности скачать один файл?

Добавлено через 1 минуту и 37 секунд
Всё. Скачал. Кнопка ZIP внезапно начала работать.
PM MAIL   Вверх
k0rvin
Дата 12.5.2013, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Akella @  12.5.2013,  19:33 Найти цитируемый пост)
у всех нормально скачивается файл и только у меня HTML-документ?

У всех HTML-документ, это же ссылка не на содержимое файла, а на страницу просмотра.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Akella
Дата 12.5.2013, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Код

Начало теста Repeat=100000000 Count=1 Длины строк:  1 Результат: 13915 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  2 Результат: 13885 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  5 Результат: 13993 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  10 Результат: 13993 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  20 Результат: 19968 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  50 Результат: 21996 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  100 Результат: 23151 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  1 2 Результат: 18190 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  2 4 Результат: 18330 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  5 10 Результат: 17378 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  10 20 Результат: 23322 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  20 40 Результат: 31996 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  50 100 Результат: 33540 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  1 10 2 5 Результат: 29407 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  2 20 4 10 Результат: 36941 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  5 50 10 25 Результат: 30139 мс
Начало теста Repeat=100000000 Count=1 Длины строк:  10 100 20 50 Результат: 34804 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  1 Результат: 4415 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  2 Результат: 4540 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  5 Результат: 4789 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  10 Результат: 5055 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  20 Результат: 5694 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  50 Результат: 6879 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  100 Результат: 8924 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  1 2 Результат: 8549 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  2 4 Результат: 8830 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  5 10 Результат: 8049 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  10 20 Результат: 8877 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  20 40 Результат: 10655 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  50 100 Результат: 14321 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  1 10 2 5 Результат: 14664 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  2 20 4 10 Результат: 15569 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  5 50 10 25 Результат: 17456 мс
Начало теста Repeat=1000000 Count=100 Длины строк:  10 100 20 50 Результат: 21513 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  1 Результат: 4134 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  2 Результат: 4212 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  5 Результат: 4399 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  10 Результат: 4680 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  20 Результат: 6365 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  50 Результат: 15709 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  100 Результат: 28876 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  1 2 Результат: 8065 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  2 4 Результат: 8377 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  5 10 Результат: 8456 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  10 20 Результат: 12418 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  20 40 Результат: 21778 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  50 100 Результат: 36956 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  1 10 2 5 Результат: 15819 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  2 20 4 10 Результат: 20389 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  5 50 10 25 Результат: 29391 мс
Начало теста Repeat=10000 Count=10000 Длины строк:  10 100 20 50 Результат: 50310 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  1 Результат: 4508 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  2 Результат: 4618 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  5 Результат: 5788 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  10 Результат: 7410 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  20 Результат: 10935 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  50 Результат: 16801 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  100 Результат: 28486 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  1 2 Результат: 8923 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  2 4 Результат: 9766 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  5 10 Результат: 10608 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  10 20 Результат: 14492 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  20 40 Результат: 22402 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  50 100 Результат: 50045 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  1 10 2 5 Результат: 19921 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  2 20 4 10 Результат: 26333 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  5 50 10 25 Результат: 36348 мс
Начало теста Repeat=100 Count=1000000 Длины строк:  10 100 20 50 Результат: 61761 мс


Добавлено через 3 минуты и 21 секунду
CPU Intel Core i7-3770 3.4Ghz
RAM 8Gb
Win 7 ult x64

Проц был загружен примерно на 12-14%.

Добавлено через 4 минуты и 39 секунд
Beltar, что можно сказать? Попытайся форматировать код хотя бы.
PM MAIL   Вверх
Beltar
Дата 12.5.2013, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 7



Что за машина?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 12.5.2013, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Beltar, попробуй заменить в циклах for на while и на repeat

Добавлено через 21 секунду
вот вам ещё в тему smile
http://www.sql.ru/forum/412782-1/benchmark...a-delphi?hl=net

Добавлено через 3 минуты и 3 секунды
http://www.sql.ru/forum/actualutils.aspx?a...amp;msg=3973659

три сообщения на тему ,что код нужно оптимизировать.


Цитата

Обратился за помощью к коллегам с www.delphikingdom.com, порекомендовали такую штуку:

В приведённом примере заменил for на while во внутреннем цикле
//     for kl:=d+1 to razmer do
//     if b[kl]<b[m] then m:= kl;
      kl:= d + 1;
      while kl <= razmer do begin
        if b[kl]<b[m] then m:= kl;
        Inc(kl);
      end;

Результат значительно улучшился - на Athlon XP 2000+ на исходном варианте BDS 2006 дает 2047 ms, после замены for на while - 1641 ms, но тем не менее, до скорости старых версий всё равно не дотягивает:( 



Добавлено через 3 минуты и 30 секунд
Цитата

Народ, я в шоке!!!
От первоначальных 14,8 сек получил 9,8 простой заменой for на while!!! 



Добавлено через 4 минуты и 36 секунд
Цитата

vlgri
Еще поменяй

while true do
begin
....
end;

на

repeat
...
until false;


переменную razmer на константу

D2006 - Time: 8657(ms) !!!


Добавлено через 5 минут и 34 секунды
Хотя.... читая дальше вижу, что там какой-то баг.
PM MAIL   Вверх
Athari
Дата 12.5.2013, 20:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



@Beltar

Цитата
А хрен его знает, но у меня при 100кк созданиях 11 сек из 23 на конструктор стрингбилдера пришлось.

Смотрим код:

Код

constructor TStringBuilder.Create;
begin
  inherited Create;
  FMaxCapacity := MaxInt; // int field
  Capacity := DefaultCapacity; // property
  FLength := 0; // int field
end;

constructor TObject.Create;
begin
end;

procedure TStringBuilder.SetCapacity(Value: Integer);
begin
  // (arg checks)
  System.SetLength(FData, Value); // выделение памяти под массив
end;


Вывод: тормоза в конструкторе таки из-за выделения памяти на 16 символов.

Цитата
Насколько ясный был исходный код, настолько корректно и преобразование.

Ага.

Было:
Код

string[] strs = lengths.Select(i => new string('a', i)).ToArray();


Стало:
Код

var S:String;
    i,j:Integer;
    Strings:TArray<String>;
SetLength(Strings,Length(Lengths));
for i:=0 to High(Strings) do S:=StringOfChar('a',Lengths[i]);


Цитата
Еще раз говорю, специально для глупого Атари, я этих консолек еще в TP 7.1 написался, и при выборе что писать, консоль или норм. программу с кнопками, я всегда буду делать с кнопками.

Твоя "нормальная программа" в отличие от моей консольной имеет следующие недостатки:
1. Невозможно скопировать текст в буфер обмена.
2. Невозможно скопировать часть текста.
3. Получение файла с частичным результатом после прерывания работы невозможно.
4. Прервать работу программы можно только через диспетчер задач.
5. Программа периодически отмечается системой как зависшая.
6. Невозможно выбрать, в какой файл сохранять результат.
7. После запуска нужно вручную нажимать на кнопку, чтобы тест запустился.

Продолжать?

Добавлено через 3 минуты и 21 секунду
@k0rvin

Цитата
 Добавил Go, но он сливает в этом «бенчмарке». =) https://github.com/korvinfn/Tmp-StringBuilderPerf 

С какими результатами?
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Akella
Дата 12.5.2013, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Athari @  12.5.2013,  00:58 Найти цитируемый пост)
Мы тут с Белтаром замутили сравнение скорости работы класса (T)StringBuilder в .NET и Delphi.


Ты уверен, что Beltar написал правильный код?
PM MAIL   Вверх
Beltar
Дата 12.5.2013, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 7



Он лично проверял, сказал: "похоже на правду". Можете еще раз сопоставить сырцы. Или др. вариант, выбрать более удобные диапазоны и просто складывать строки длин 1, 5, 10, 20, 50, 100, что банально уменьшит вероятность ошибок.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 12.5.2013, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Все три теста выполняли на разных машинах или на одной и той же?
PM MAIL   Вверх
Athari
Дата 12.5.2013, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



@Akella

Цитата
Все три теста выполняли на разных машинах или на одной и той же?

Если в имени файла "Beltar", то на компе Белтара. Если в имени файла "Athari", то на компе Атари. Искренне ваш, К.О.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Beltar
Дата 12.5.2013, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 7



Вообще-то у меня тогда машина была разогнана с 2,67-1333 до 3,21-1600, так что результаты сейчас у меня будут несколько ниже.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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