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

Поиск:

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


Опытный
**


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

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



Вы не могли хотя бы согласовать имена параметров?


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


Опытный
**


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

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



Repeat зарезервированное слово в Delphi, можно, правда, &Repeat писать, но я такое извратом считаю.

Цитата

Блин, Beltar, тебя не учили пробелами выделять операторы?


Блин, ты оператор вида a:=b прочитать не можешь? Такие блин умные, в каком-то функциональном брейнфаке разбираются, а тут прочитать не могут. Насчет читаемости шарпового текста с засовыванием черт знает чего на одну строчку я вообще молчу.

2 Вещи в VCL не понимаю:
1) a := b; Увеличивает читаемость на 0 процентов в элементарных случаях и расшарашивая строки в сложных.
2)
begin
  DoSomething;
end;

Отрыв операторного блока от операторных скобок.

Цитата

Тут узкое место -- "Fast"MM


Я под AQTime запускал еще, там доля менеджера памяти очень небольшая была при десятках миллионов вызовов. При этом я только 2-3 первых теста прогонял, т. к. профилировщик в разы замедляет прогу.

Цитата

В LLVM, я так подозреваю, используется "системный" менеджер памяти


А что FastMM может получить память не обращаясь к ОС?

Цитата

что там размер строки определяет?


Блин, если у тебя строка 400 Мб, то наверное она одна будет определять занимаемую память, а не проложение на пару метров. У себя я выхода за гиг вообще не заметил. Ессли память отдается системе сразу, как строка заканчивает сборку, то разницы никакой не будет. Если же не сразу, то я без понятия в какой момент это может делаться.

Цитата

Я GC отключаю, а ты убираешь вызов Free, ОК?


Я так пробовал, ес-но на более коротком цикле и без работы со строкой. Ломать не строить, удаление раза в 4 быстрее создания.

ИМХО менеджер памяти тут вообще не причем, потому что вроде бы и код тривиальный, но оптимизация все равно имеет значение. Если хочешь прогони в цикле 1 млрд раз умножение/деление пары вещественных чисел в VS и в Delphi, VS должна быть заметно быстрее, хотя что там оптимизировать-то. Кстати, это можно и на билдерном LLVM потестить.


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


Вы это прекратите!
***


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

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



Цитата(Athari @  12.5.2013,  02:41 Найти цитируемый пост)

2. Результаты в папке Results. Там и текстовый вывод приложений с компов меня и Белтара, и исходник табличек из поста выше.

Э... а вы их не на одной и той же машине запускали? А то, возможно, это просто тест производительности ваших компьютеров (в первую очередь их памяти).
PM   Вверх
Beltar
Дата 12.5.2013, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Результаты выложенные Атари на машине Атари.

Так, а я тут решил перемножение\деление погонять. В общем экстрима уже выше крыши, например странное переполнение (сделал числа ближе к 1, прошло) на Delphi Win 32 Debug при запуске без отладчика, под отладчиком же все норм и работает в полтора раза быстрее чем Delphi Win 32 Release;  smile 
Помимо этого проблема http://qc.embarcadero.com/wc/qcmain.aspx?d=104007 нарисовалась под всеми 64-хбитными отладчиками.

В общем такая вот тупая числодробилка:

Код

Cardinal t;
int ct;
double a,b=1.0000001;
boolean o;
ct=GetTickCount();
for(t=1;t<1000000000; t++)
    {
    if (o){a=a*b;}
        else{a=a/b;}
    o=!o;
    }
ct=GetTickCount()-ct;


Аналогично на Паскале:

Код

a:=1.0000001;
b:=a;
ct:=GetTickCount;
for t:=1 to 1000000000 do
  begin
  if o then a:=a*b
       else a:=a/b;
  o:=not o;
  end;
Label1.Caption:=IntToStr(GetTickCount-ct);


В итоге на 32 битах быстрее всех с 6,8 с Delphi XE3 с отключенной оптимизацией. Я прогнал много раз, все тщательно смотрел, но именно на этой версии такой результат.
Затем Release CPP XE4 с 7,5 с. CPP XE4 Debug, Delphi XE3 Release и все 32-битные профили Delphi XE4 10,1-10,2 с. Х)

На 64 битах, производительность дробилки 64-хбитных вещественных должна расти.
Delphi без оптимизации: 7,2 с.
Delphi с оптимизацией: 4,8 с.
CPP XE4 LLVM 2 сек.
Поскольку не LLVM-компилятора для CPP 64 у меня нету, то сравнить только с Delphi, но превосходство в 2,5 раза почти. По-моему повод подумать.

Кстати, в дебаге CPP 64 считал аж 71,9 сек. Наверное, можно уменьшить, но я не ковырялся особо в настройках. При этом размер файла составляет 1362 К, что меньше, чем у релизной Delphi, а релизный CPP 64 весит всего 550 Кб

Это сообщение отредактировал(а) Beltar - 12.5.2013, 15:13


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


Опытный
**


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

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



Цитата(Beltar @  12.5.2013,  14:58 Найти цитируемый пост)
Результаты выложенные Атари на машине Атари.

Кстати напишите конфигурацию.

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

Мешанину символов вида
Код

BaseLengths:=TArray<Integer>.Create(1, 2, 5, 10, 20, 50, 100);
Coeff:=TArray<Integer>.Create(1);
PerformPack;
BaseLengths:=TArray<Integer>.Create(1, 2, 5, 10, 20, 50);
Coeff:=TArray<Integer>.Create(1,2);
PerformPack;
BaseLengths:=TArray<Integer>.Create(1, 2, 5, 10);
Coeff:=TArray<Integer>.Create(1,10,2,5);

Читать, а особенно просто быстро просмотреть, сложнее, чем
Код

BaseLengths := TArray<Integer>.Create(1, 2, 5, 10, 20, 50, 100);
Coeff       := TArray<Integer>.Create(1);
PerformPack;

BaseLengths := TArray<Integer>.Create(1, 2, 5, 10, 20, 50);
Coeff       := TArray<Integer>.Create(1, 2);
PerformPack;

BaseLengths := TArray<Integer>.Create(1, 2, 5, 10);
Coeff       := TArray<Integer>.Create(1, 10, 2, 5);
PerformPack;

Cycles := Cycles div 100;
Count  := Count * 100;



Цитата(Beltar @  12.5.2013,  11:45 Найти цитируемый пост)
2 Вещи в VCL не понимаю:
1) a := b; Увеличивает читаемость на 0 процентов в элементарных случаях и расшарашивая строки в сложных.
2)
begin
  DoSomething;
end;

1) Увеличивает читаемость значительно.
2) Отражение подчиненности структуры. DoSomething подчинен begin'у, это не два последовательных оператора. Все правильно.


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


Вы это прекратите!
***


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

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



Цитата(Beltar @  12.5.2013,  15:58 Найти цитируемый пост)
Результаты выложенные Атари на машине Атари.

И для Delphi тоже? А то из того, что он написал, следует, что вы получали их каждый у себя.

Кстати, конфигурацию машин(ы) действительно было бы интересно увидеть...
PM   Вверх
Beltar
Дата 12.5.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Передать экзешники и сырцы не сложно. I5-2500 на 3.2ГГц у него.

Цитата

Читать, а особенно просто быстро просмотреть, сложнее, чем


Согласен, но не всегда делю, особенно если случай настолько тривиален. Хотя всегда вставляю пустую строку между абзацами в тексте.

Цитата

Отражение подчиненности структуры. DoSomething подчинен begin'у, это не два последовательных оператора. Все правильно.


Отражение подчиненности как раз и задается равным отступом, впрочем в Ц-подобных языках пишут ужасы вида:
if (a==b){
DoSomething;
}

и не краснеют. Так что непонятны ваши жалобы.

А раньше вообще лепили черт знает что в трансильванской ереси просто потому что не поняли Чарльза Симони, который предлагал добавлять префиксы содержащие действительно полезную информацию, а не и без того ясный тип. lpszP S бдлжд. Так что в программировании далеко не всегда стандарты действительно отражают оптимальный подход, слишком это молодая отрасль.


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


Опытный
**


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

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



Цитата(Beltar @  12.5.2013,  14:58 Найти цитируемый пост)
По-моему повод подумать.

Ага. Например над косяками в коде.

http://ideone.com/vCEFda http://ideone.com/bO1f2h


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


Опытный
**


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

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



Цитата(Beltar @  12.5.2013,  15:59 Найти цитируемый пост)
Отражение подчиненности как раз и задается равным отступом

Нет. Ты же не пишешь begin с равным отступом с for. 

Добавлено @ 16:00
Цитата(Beltar @  12.5.2013,  15:59 Найти цитируемый пост)
Так что непонятны ваши жалобы.

Как будто я так пишу.

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


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


Опытный
**


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

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



Цитата

Например над косяками в коде


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


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


Новичок



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

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



@Akella

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

Мне проект Белтар скинул. У него открывается, у меня открывается, а у Акеллы -- "дпр бредовый"...

В res иконка. Не, я, конечно, не в восторге от запихивания бесполезного бинарного файла в VCS, но в мои времена дельфи не очень любила, когда этот файл сносили. Новая пересоздаст что ли? (И да, Белтар умудрился написать VCL приложение со списком и кнопочкой. Видно, написание консольных приложений под дельфи -- непосильная задача. smile )

Если с гитом такие проблемы, тот там сверху есть иконка "ZIP". Вот: https://github.com/Athari/Tmp-StringBuilder...hive/master.zip

@k0rvin

Цитата
Блин, Beltar, тебя не учили пробелами выделять операторы? Какое-то сплошное месиво символов.

Экономия символов же! Дельфи настолько многословен, что приходится экономить на пробелах. smile 

Цитата
Вы не могли хотя бы согласовать имена параметров?

Белтар сначала отказывался вообще читать мой исходник (в духе "это полная х##ня"), требуя словесного описания, потом с грехом напополам, после часов разборок, таки по исходнику удалось передать идею и отдебажить (уже я дебажил)...

Цитата
Кстати напишите конфигурацию.

OS Name    Microsoft Windows 7 Ultimate
Version    6.1.7601 Service Pack 1 Build 7601
System Type    x64-based PC
Processor    Intel® Core™ i5-2500K CPU @ 3.30GHz, 3301 Mhz, 4 Core(s), 4 Logical Processor(s)
Installed Physical Memory (RAM)    8.00 GB
Total Physical Memory    7.95 GB
Total Virtual Memory    7.97 GB
Page File Space    16.0 MB

@Beltar

Цитата
Насчет читаемости шарпового текста с засовыванием черт знает чего на одну строчку я вообще молчу.

Правильно, тебе с твоими циклами в одну строчку стоит промолчать.

Цитата
Я под AQTime запускал еще, там доля менеджера памяти очень небольшая была при десятках миллионов вызовов. При этом я только 2-3 первых теста прогонял, т. к. профилировщик в разы замедляет прогу.

И что же тогда жрёт время?

Цитата
А что FastMM может получить память не обращаясь к ОС?

Как я понимаю, он её получает более крупными кусками, чем запрашивает юзер, а потом раздаёт уже своими силами.

Цитата
У себя я выхода за гиг вообще не заметил.

Посмотри Max Private Bytes в Process Explorer после прогона.

Цитата
Если же не сразу, то я без понятия в какой момент это может делаться.

Дык я как раз и ожидал, что FastMM 400 метров будет освобождать сразу, а не ждать у моря погоды.

Цитата
Э... а вы их не на одной и той же машине запускали? А то, возможно, это просто тест производительности ваших компьютеров (в первую очередь их памяти).

Там же в именах файлов есть указание, чей компьютер.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Beltar
Дата 12.5.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

а у Акеллы -- "дпр бредовый"


У него D2007.

Цитата

после часов разборок


Заметь все было бы намного проще, если бы ты хотя бы не вводил свои коэффициенты, да и число тестов сокращалось вполовину. Насколько грамотно задачу поставил, настолько быстро получил решение, а переписывание с незнакомого толком языка, особенно его неочевидных конструкций иного результата и не могло иметь.

Цитата

уже я дебажил


Ты не дебажил, а проверял, что тебя поняли правильно. Если я понял неправильно, то я в принципе не смогу ничего отдебажить.

Цитата

И что же тогда жрёт время?


Создание объекта самого жрет, причем сильно. Плюс оптимизация. Что я тебе и пытаюсь объяснить, даже на тривиальном коде может иметь значение.

Цитата

Дык я как раз и ожидал, что FastMM 400 метров будет освобождать сразу, а не ждать у моря погоды.


Он жадный, насколько я знаю. Сейчас отдашь, вдруг потом понадобится. Так что логика определенная есть, по крайней мере, это в интересах программы всю память зажать.

Цитата

Правильно, тебе с твоими циклами в одну строчку стоит промолчать.


Ну прям охренеть какая трагедия, однострочковый простейший оператор не понятен.


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


Опытный
**


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

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



Цитата(Beltar @  12.5.2013,  16:38 Найти цитируемый пост)
А гадать, особенно каким образом данный сервер выполняет код, как-то занятие не очень. 

При чем тут сервер?
Код

double a, b = 1.0000001;

и
Код

double a = 1.0000001;
double b = a;

Совсем не одно и то же. Да и o лучше явно инициализировать, а то результат другой будет.


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


Новичок



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

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



@Beltar

Цитата
У него D2007.

Что, в дельфи такая отвратительная обратная совместимость, что приходится сидеть в среде разработки шестилетней давности? smile 

Цитата
Ты не дебажил, а проверял, что тебя поняли правильно. Если я понял неправильно, то я в принципе не смогу ничего отдебажить.

Ты уже забыл, как ты не осилил превращение массива [1, 2, 4] в ["a", "aa", "aaaa"], и в результате конкатенировались пустые строки? smile 

Цитата
Создание объекта самого жрет, причем сильно.

Ты про вызов конструкторов? Что там такой космической сложности? Обнуление памяти что ли?

Цитата
Ну прям охренеть какая трагедия, однострочковый простейший оператор не понятен.

Понять можно всё. Вопрос в затрачиваемом времени.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Beltar
Дата 12.5.2013, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Ты про вызов конструкторов? Что там такой космической сложности? Обнуление памяти что ли?


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

Цитата

Ты уже забыл, как ты не осилил превращение массива [1, 2, 4] в ["a", "aa", "aaaa"]


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

Цитата

Совсем не одно и то же. Да и o лучше явно инициализировать, а то результат другой будет.


Результат меня ясное дело не волнует, лишь бы не переполнялось. Почему не одно и то же? Т. е. я в плюсах все равно должен каждую переменную все равно ручками инициализировать хотя при объявлении уже присвоил значение?

Цитата

Видно, написание консольных приложений под дельфи -- непосильная задача.


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


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

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

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


 




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


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

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