Как запустить 50 терминалов на одном компе? - страница 4

 
До некоторых пор я думал, что 99% юзеров ходят в Интернет только для того, чтобы удовлетворить свои амбиции и чувство собственной важности.

Наверное, я ошибался. Эта цифра - 100%.
 
Приходится добегать до открывающей скобки, стирать её, печатать заново, чтобы подсказка по параметрам функций появилась вновь, и продолжить ввод параметров.
Ctrl+Shift+Space ;)
 
Уважаемый Programmer,

Ваш последный ответ получился гораздо аргументированней. Но у меня создается впечатление, что Вы относитесь к программе так, словно она должна быть абсолютным идеалом. После чего придираетесь к мелочам и на этом основании делаете далеко идущие выводы.

Я неоднократно в этом форуме объяснял позицию нашей компании в разработке софта - "простота даже в ущерб функциональности". Это означает, что мы осознанно отказываемся от усложнения продукта. И даже больше - думаем над тем, что можно выкинуть из программы без серьезного ущерба основному функционалу. Это наша политика.

На сегодня - не принципиально, 2.8 или 28 Mb занимает продукт.

Это не принципиально для программистов новой волны и писателям популярной литературы/статей для соответствующих программистов. Но очень принципиально в случае разработки по настоящему массового продукта. Я бы даже сказал - страшно принципиально для успеха на этом рынке. И размер самым явным образом показывает отношение разработчика к качеству реализации.

Попробуйте распространить программы в 3Mb и в 30 Mb в виде нескольких сотен тысяч копий? Только с нашего сайта ежедневно скачивается в среднем 700 копий терминалов на протяжении уже многих лет. Это не считая множества брокеров, которые распространяют массу копий терминалов со своих сайтов.

И ответственность за неэкономное расходование ресурсов полностью ложится на плечи этого программиста.

Именно так. А на нас она ложилась на этапе разработки MQL4 и его виртуальной машины. Мы реализовали ее очень быстрой и экономичной. Но за все надо платить.

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

Кстати, частенько программисты стыдливо умалчивают про детали. Например, могут заявить об ошибке без указания самых важных параметров: глубина истории, полный код индикатора/эксперта, условия запуска!

Чуть не забыл - никто же не запрещает выносить весь свой расчетный код в DLL!
 
уменьшил количество баров в истории и на чартах в 10 раз
терминал стал занимать памяти 20 метров вместо 40
 
уменьшил количество баров в истории и на чартах в 10 раз
терминал стал занимать памяти 20 метров вместо 40

А что является постоянными издержками и что переменными?
 
komposter:
Ctrl+Shift+Space ;)

Спасибо, но я почему-то не надеялся, что есть shortcut на это. :)
И, несмотря на его наличие, редактор не становится "отличнее", потому что всё ещё содержит эту неприятную ошибку.

Renat:
Ваш последный ответ получился гораздо аргументированней. Но у меня создается впечатление, что Вы относитесь к программе так, словно она должна быть абсолютным идеалом. После чего придираетесь к мелочам и на этом основании делаете далеко идущие выводы.

Идеалом, не идеалом, но элементарные вещи должны быть соблюдены. Не стоит соблюдение элементарных вещей называть идеалом, да ещё и абсолютным.
А мелочи или не мелочи - не Вы решаете. Об этом Вам скажет пользователь. Если он сказал, что это - не мелочи, значит, так и есть.
Обновился пользователь посреди недели (что Вы, что Вы, - технология LiveUpdate!), однако недоделанная версия (первая версия 188 build'а, если можно так сказать :) ) не хочет нормально работать. Что первое придёт в голову пользователю?
Конечно, вернуть всё назад до конца торговой недели, а там уже он будет разбираться, в чём дело. Я специально привёл пример этой ситуации, с которой реально столкнулся не один человек, чтобы задать вопрос, на который Вы так и не ответили.
Вы так и не ответили на вопрос, который я задал в ответ на объявленное Вами такое преимущество продукта, как наличие LiveUpdate, - я его повторяю: как откатиться к предыдущей версии, если с обновлённой версией возникли какие-то проблемы?

Поверьте, это не мелочь. Для пользователя - точно не мелочь.
И лучше эти, якобы, мелочи устранить, - сужу по собственному опыту.
Где та граница, после которой действительно начинается стремление к идеалу, - определяет пользователь, а не разработчик. Разработчик определяет лишь класс продукта, позиционируя его в этом классе.
Когда эта граница достигнута, заканчиваются не только указания на ошибки, которые Вы называете мелочами, но и предложения по доработке. Остаются только похвалы и рекомендации другим пользоваться этим продуктом. Более того, появляются рекомендации перейти на использование продукта с аналогичного другого - и при этом никто людей за язык не тянет.

Renat:
Я неоднократно в этом форуме объяснял позицию нашей компании в разработке софта - "простота даже в ущерб функциональности". Это означает, что мы осознанно отказываемся от усложнения продукта. И даже больше - думаем над тем, что можно выкинуть из программы без серьезного ущерба основному функционалу. Это наша политика.

Я разве утверждал, что продукт слишком усложнён?
Укажите, где я такое утверждал.

Сначала я был объявлен далёким от программирования, мне был дан совет не придумывать себе такой ник. Признаёте ли Вы, что ошиблись и опровергаете ли это своё утверждение?

А потом было заявлено, что я недоволен отсутствием клиентского API, хотя я о нём и не заикался. Я попросил привести аргументы, что я утверждал такое, Вы не привели. Признаёте ли Вы, что голословно и неверно заявили это и опровергаете ли это своё утверждение?

Может, это как раз всё попытки увести в сторону от главной моей мысли:

Речь о качестве реализации MT4 в первую очередь и этике взаимоотношений с пользователями продукта - во вторую.

Хотелось бы увидеть ответы на эти вопросы.

Renat:
Это не принципиально для программистов новой волны и писателям популярной литературы/статей для соответствующих программистов. Но очень принципиально в случае разработки по настоящему массового продукта. Я бы даже сказал - страшно принципиально для успеха на этом рынке. И размер самым явным образом показывает отношение разработчика к качеству реализации.

Не буду спорить, вполне возможно, что с маркетинговой точки зрения, подчёркиваю, именно с маркетинговой, - это имеет большое и даже очень большое значение.
Но, с точки зрения расходования пользователем ресурсов своего компьютера, подчёркиваю, пользователем, а не программистом новой волны, - расходование в таких пределах несущественно.
Далее, Вы утверждаете, что размер самым явным образом показывает отношение разработчика к качеству реализации, наверное, полагая, что люди решат, что разработчик очень заботится о качестве.
Но так решат лишь те, кто отучен думать.
Разработчику выгодно распространить продукт, это его изначальная тактическая цель (стратегическая - выживать и зарабатывать). Законы маркетинга диктуют свои условия - очень важным оказывается (предположим) размер (дистрибутива) клиентского терминала.
Отсюда следует, что, с точки зрения выживания и зарабатывания, размер - важнее качества реализации. И тут приходится идти на компромисс и выбирать уровень планки для качества реализации и этики в отношении пользователя.
И такой маленький размер (дистрибутива) MT4 может показывать, что планка для уровня качества выбрана очень низкой в угоду размеру для целей широты распространения, поскольку именно широта распространения важна разработчику в первую очередь.
Маленький размер - не единственная причина низкого качества, обычно одной из основных причин является "быстрописание", когда некогда доводить продукт, надо быстрее его выбрасывать на рынок. А тут ещё и требование малого размера давит.

Renat:
Попробуйте распространить программы в 3Mb и в 30 Mb в виде нескольких сотен тысяч копий? Только с нашего сайта ежедневно скачивается в среднем 700 копий терминалов на протяжении уже многих лет. Это не считая множества брокеров, которые распространяют массу копий терминалов со своих сайтов.

Честно говоря, я вообще не обратил внимание на размер, точнее, в начале скачивания - обратил, но только для того, чтобы оценить, через какое время он скачается, и чем мне пока заняться, чтобы по времени примерно столько же получилось.
Вот Вы и ещё раз приводите аргумент в пользу важности маленького размера для успеха при распространении, что играет явно не в пользу качества реализации.

Renat:
И ответственность за неэкономное расходование ресурсов полностью ложится на плечи этого программиста.

Именно так. А на нас она ложилась на этапе разработки MQL4 и его виртуальной машины. Мы реализовали ее очень быстрой и экономичной. Но за все надо платить.

Насчёт "именно так". Вы забыли привести аргументы. Поэтому Ваше утверждение - голословно, если не сказать больше.
Поскольку Вы разделили ответственность с пользователем, не предоставив в MQL4 средств управления памятью, Вы уже не можете утверждать, что ответственность - полностью на программисте.
Поскольку Вы ещё и организовали выполнение программ MQL4 в виртуальной машине, об особенностях реализации которой пользователь не имеет представления и, соответственно, не может точно знать, какие конструкции могут вызвать существенный расход ресурсов (может только предполагать), - Вы, тем самым, ещё большую часть ответственности взяли на себя.
Ваше утверждение о том, что виртуальная машина реализована быстрой и экономичной, не подкреплено никакими аргументами. Как я (и любой другой) может это проверить?

Renat:
Если написан сложный индикатор, запущены десятки его копий, да еще и на большой глубине истории, то надо отдавать себе отчет в том, что ресурсы тратятся. Не нужно быть похожими на русских мужиков из анекдота про японскую бензопилу.

Тратятся-то они, конечно, тратятся, но, во-первых, повторюсь ещё раз, ответственность за это не полностью на программисте - я указал две причины - почему, - и, во-вторых, - не многовато ли 9 Mb в расчёте на один индикатор? Не с графикой, всё-таки, работаем.
Именно для того, чтобы показать вопиющесть таких расходов, я и приводил сравнение с ресурсами памяти, необходимыми для работы аж всей Windows 95.

Renat:
Кстати, частенько программисты стыдливо умалчивают про детали. Например, могут заявить об ошибке без указания самых важных параметров: глубина истории, полный код индикатора/эксперта, условия запуска!

Нынче программистов - меньшинство, всё больше любители. Так что - неудивительно.
Однако:

Речь о качестве реализации MT4 в первую очередь и этике взаимоотношений с пользователями продукта - во вторую.

Renat:
Чуть не забыл - никто же не запрещает выносить весь свой расчетный код в DLL

Именно с использованием этого механизма и будет организован двусторонний gate.
Вот видите, Вы и сами подошли к тому самому решению, которое я принял в отношении MT4, имея ввиду серьёзное программирование, - отказ от использования MQL4 в серьёзных местах по причине низкого качества реализации MT4 и MQL4, а также по причине достаточно неэтичного отношения к пользователю (вплоть до изъятия функций из API без предварительного предупреждения и без достаточного периода, в течение которого пользователь мог бы подготовиться к таким изменениям).

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

Но почему-то этот факт приходится вычислять.
А разработчик пытается представить всё в более лучшем виде, чем оно есть на самом деле.
 
Programmer 29.01.06 14:55
Ваше утверждение о том, что виртуальная машина реализована быстрой и экономичной, не подкреплено никакими аргументами. Как я (и любой другой) может это проверить?

Насчет скорости можно посмотреть здесь, я не помню, что кто-то это опровергал.
"MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 и VC++: сравнение скорости"
 
Уважаемый Programmer,

Вы очень много пишете в обвинительном тоне, выстраивая свои умозаключения на полностью отсутствующих фактах. Большинство исходных посылок являются недоказанными, а зачастую и вовсе строятся на уровне "кто-то вот сказал как-то". Вы слишком легко оперируете цифрами без фактических и проверяемых доказательств.

Приведите, пожалуйста, четкие и точные условия проверок с полной выкладкой исходников индикаторов/экспертов. То есть:

1) исходные данные по терминалу - глубина истории, сколько открытых графиков, на каком сервере
2) исходное железо, на котором проводились тесты
3) самое главное - исходники спорных индикаторов и экспертов
4) описание условий тестирования

Вам достаточно предъявить исходник своего индикатора (при котором запуск терминала занимает пару минут), выложить тестовый профайл окон и указать сколько занимает запуск терминала. Конфигурацию железа Вы уже озвучили. Мы с удовольствием проведем замеры и сравним с Вашими словами.

Просьба отложить общечеловеческую демагогию и перейти в плоскость точных деталей в конкретной области замера производительности. Уверен, что Вам как программисту, будет это сделать легко.

И не надо подменять тему этой ветки - речь идет о производительности терминала и MQL4, а не об этике (это переход на личностный уровень) и общих мелочных претензиях (размытие исходного вопроса) к терминалу.

Кстати, вот таблица производительности некоторых языков:



Чем меньше время исполнения тестового примера в ms, тем быстрее работает язык.
 
уменьшил количество баров в истории и на чартах в 10 раз
терминал стал занимать памяти 20 метров вместо 40

А что является постоянными издержками и что переменными?


Поясните пожалуйста что вы имели ввиду?

PS. Уменьшил еще в 10 раз. Теперь MT4 занимает памяти 13 мегабайт вместо 36.
Это очень хорошо, когда приходится запускать пару терминалов для торговли. Данные на часовых чартах только за месяц показываются. Индикаторов никаких не используется. А для анализа можно оставить один терминал, в котором не уменьшать количество баров и другие ресурсы.

Интересно - за счет чего еще можно снизить объем занимаемой памяти?
 
Поясните пожалуйста что вы имели ввиду?

Постоянные издержки - это те, которые не зависят от изменяемых параметров.
Например, терминал без открытых окон, подключенный к счету, с десятком символов в маркетвотче съедает сам по себе 10 Mb. То есть, сам по себе терминал занимает 10Mb памяти.

А переменные издержки - это те, которые зависят от изменяемых параметров:
1) количество окон (как открытых, так и закрытых в этой сессии)
2) количества индикаторов (явно или неявно используемых)
3) количества запущенных экспертов и скриптов
4) запуск тестера

Общее потребление ресурсов = постоянные + переменные издержки.
Если уменьшить в 10 раз переменные издержки, общее потребление никак в 10 раз не уменьшится.
Причина обращения: