![]() |
Модераторы: LSD Страницы: (144) « Первая ... 101 102 [103] 104 105 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Вы не могли хотя бы согласовать имена параметров?
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Beltar |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Repeat зарезервированное слово в Delphi, можно, правда, &Repeat писать, но я такое извратом считаю.
Блин, ты оператор вида a:=b прочитать не можешь? Такие блин умные, в каком-то функциональном брейнфаке разбираются, а тут прочитать не могут. Насчет читаемости шарпового текста с засовыванием черт знает чего на одну строчку я вообще молчу. 2 Вещи в VCL не понимаю: 1) a := b; Увеличивает читаемость на 0 процентов в элементарных случаях и расшарашивая строки в сложных. 2) begin DoSomething; end; Отрыв операторного блока от операторных скобок.
Я под AQTime запускал еще, там доля менеджера памяти очень небольшая была при десятках миллионов вызовов. При этом я только 2-3 первых теста прогонял, т. к. профилировщик в разы замедляет прогу.
А что FastMM может получить память не обращаясь к ОС?
Блин, если у тебя строка 400 Мб, то наверное она одна будет определять занимаемую память, а не проложение на пару метров. У себя я выхода за гиг вообще не заметил. Ессли память отдается системе сразу, как строка заканчивает сборку, то разницы никакой не будет. Если же не сразу, то я без понятия в какой момент это может делаться.
Я так пробовал, ес-но на более коротком цикле и без работы со строкой. Ломать не строить, удаление раза в 4 быстрее создания. ИМХО менеджер памяти тут вообще не причем, потому что вроде бы и код тривиальный, но оптимизация все равно имеет значение. Если хочешь прогони в цикле 1 млрд раз умножение/деление пары вещественных чисел в VS и в Delphi, VS должна быть заметно быстрее, хотя что там оптимизировать-то. Кстати, это можно и на билдерном LLVM потестить. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||||
|
|||||||||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Э... а вы их не на одной и той же машине запускали? А то, возможно, это просто тест производительности ваших компьютеров (в первую очередь их памяти). |
|||
|
||||
Beltar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Результаты выложенные Атари на машине Атари.
Так, а я тут решил перемножение\деление погонять. В общем экстрима уже выше крыши, например странное переполнение (сделал числа ближе к 1, прошло) на Delphi Win 32 Debug при запуске без отладчика, под отладчиком же все норм и работает в полтора раза быстрее чем Delphi Win 32 Release; ![]() Помимо этого проблема http://qc.embarcadero.com/wc/qcmain.aspx?d=104007 нарисовалась под всеми 64-хбитными отладчиками. В общем такая вот тупая числодробилка:
Аналогично на Паскале:
В итоге на 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++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Кстати напишите конфигурацию. Мешанину символов вида
Читать, а особенно просто быстро просмотреть, сложнее, чем
1) Увеличивает читаемость значительно. 2) Отражение подчиненности структуры. DoSomething подчинен begin'у, это не два последовательных оператора. Все правильно. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
Beltar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Передать экзешники и сырцы не сложно. I5-2500 на 3.2ГГц у него.
Согласен, но не всегда делю, особенно если случай настолько тривиален. Хотя всегда вставляю пустую строку между абзацами в тексте.
Отражение подчиненности как раз и задается равным отступом, впрочем в Ц-подобных языках пишут ужасы вида: if (a==b){ DoSomething; } и не краснеют. Так что непонятны ваши жалобы. А раньше вообще лепили черт знает что в трансильванской ереси просто потому что не поняли Чарльза Симони, который предлагал добавлять префиксы содержащие действительно полезную информацию, а не и без того ясный тип. lpszP S бдлжд. Так что в программировании далеко не всегда стандарты действительно отражают оптимальный подход, слишком это молодая отрасль. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Нет. Ты же не пишешь begin с равным отступом с for. Добавлено @ 16:00 Как будто я так пишу. Это сообщение отредактировал(а) k0rvin - 12.5.2013, 16:03 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Если видишь ошибку, то так и говори. А гадать, особенно каким образом данный сервер выполняет код, как-то занятие не очень. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
Athari |
|
||||||||||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.6.2007 Где: Казань, Россия Репутация: 1 Всего: 1 |
@Akella
Мне проект Белтар скинул. У него открывается, у меня открывается, а у Акеллы -- "дпр бредовый"... В res иконка. Не, я, конечно, не в восторге от запихивания бесполезного бинарного файла в VCS, но в мои времена дельфи не очень любила, когда этот файл сносили. Новая пересоздаст что ли? (И да, Белтар умудрился написать VCL приложение со списком и кнопочкой. Видно, написание консольных приложений под дельфи -- непосильная задача. ![]() Если с гитом такие проблемы, тот там сверху есть иконка "ZIP". Вот: https://github.com/Athari/Tmp-StringBuilder...hive/master.zip @k0rvin
Экономия символов же! Дельфи настолько многословен, что приходится экономить на пробелах. ![]()
Белтар сначала отказывался вообще читать мой исходник (в духе "это полная х##ня"), требуя словесного описания, потом с грехом напополам, после часов разборок, таки по исходнику удалось передать идею и отдебажить (уже я дебажил)...
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
Правильно, тебе с твоими циклами в одну строчку стоит промолчать.
И что же тогда жрёт время?
Как я понимаю, он её получает более крупными кусками, чем запрашивает юзер, а потом раздаёт уже своими силами.
Посмотри Max Private Bytes в Process Explorer после прогона.
Дык я как раз и ожидал, что FastMM 400 метров будет освобождать сразу, а не ждать у моря погоды.
Там же в именах файлов есть указание, чей компьютер. |
||||||||||||||||||||
|
|||||||||||||||||||||
Beltar |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
У него D2007.
Заметь все было бы намного проще, если бы ты хотя бы не вводил свои коэффициенты, да и число тестов сокращалось вполовину. Насколько грамотно задачу поставил, настолько быстро получил решение, а переписывание с незнакомого толком языка, особенно его неочевидных конструкций иного результата и не могло иметь.
Ты не дебажил, а проверял, что тебя поняли правильно. Если я понял неправильно, то я в принципе не смогу ничего отдебажить.
Создание объекта самого жрет, причем сильно. Плюс оптимизация. Что я тебе и пытаюсь объяснить, даже на тривиальном коде может иметь значение.
Он жадный, насколько я знаю. Сейчас отдашь, вдруг потом понадобится. Так что логика определенная есть, по крайней мере, это в интересах программы всю память зажать.
Ну прям охренеть какая трагедия, однострочковый простейший оператор не понятен. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||||||
|
|||||||||||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
При чем тут сервер?
и
Совсем не одно и то же. Да и o лучше явно инициализировать, а то результат другой будет. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
Athari |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.6.2007 Где: Казань, Россия Репутация: 1 Всего: 1 |
@Beltar
Что, в дельфи такая отвратительная обратная совместимость, что приходится сидеть в среде разработки шестилетней давности? ![]()
Ты уже забыл, как ты не осилил превращение массива [1, 2, 4] в ["a", "aa", "aaaa"], и в результате конкатенировались пустые строки? ![]()
Ты про вызов конструкторов? Что там такой космической сложности? Обнуление памяти что ли?
Понять можно всё. Вопрос в затрачиваемом времени. |
||||||||
|
|||||||||
Beltar |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
А хрен его знает, но у меня при 100кк созданиях 11 сек из 23 на конструктор стрингбилдера пришлось.
Насколько ясный был исходный код, настолько корректно и преобразование.
Результат меня ясное дело не волнует, лишь бы не переполнялось. Почему не одно и то же? Т. е. я в плюсах все равно должен каждую переменную все равно ручками инициализировать хотя при объявлении уже присвоил значение?
Еще раз говорю, специально для глупого Атари, я этих консолек еще в TP 7.1 написался, и при выборе что писать, консоль или норм. программу с кнопками, я всегда буду делать с кнопками. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |