5 Знаков - страница 4

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда зачем в стилизации пишется без пропусков (X=Y, X>Y и пр.)? А бесконечные лестницы растягивает коды на метры, ведь в Эдиторе помещается не более 50-ти линий! Для меня главное всё, логика, рациональность, скорость и удобство!
А вот это уже просто такой стандарт стиля принят в стилизаторе MetaEditor'а. Если он не нравится, то можно его не использовать. Но уж лучше такой "принудительный" стиль, чем его отсутствие, ИМХО :)
Никакого отношения к скорости работы конечного исполняемого файла это не имеет.
P.S. насчёт 50 линий - у всех разное разрешение мониторов. Лично у меня на одном мониторе 54, на втором 59 помещается. И это ещё довольно "дохлые" мониторы. У кого-то и все 200+ могут помещаться (4К).
Спасибо ещё раз! При применении этой функции результаты такие (10 замеров по 10 проходов по миллиону итераций в циклах):
Вот теперь я даже не знаю что и думать.
Неужели Point() быстрее, чем _Point, или опять вмешивается погрешность, но теперь уже у GetMicrosecondCount()?
Прошу посмотреть код, может я где-то допустил ошибку?
Какая разница получается? Тоже 10-15 мс?
Скорее всего, компилятор заменяет вызов функции прямым обращением к той же переменной.
Можно попробовать сделать замер в режиме профилирования, в этом случае не все оптимизации компилятора работают.
Какая разница получается? Тоже 10-15 мс?
Скорее всего, компилятор заменяет вызов функции прямым обращением к той же переменной.
Можно попробовать сделать замер в режиме профилирования, в этом случае не все оптимизации компилятора работают.
Нет, Андрей, не 10-15.
У себя только уменьшила выражение в условных операторах с:
на:
и прогнала на медленном компе с малой оперативкой (2Гб).
Получается следующее:
А при профилировании скорость медленнее, в т.ч., и поскольку на само профилирование уходит время. И об этом помню писалось.
При профилировании у меня следующее:
Плин, искренне восхищена вашим стремлением быть объективным и пытливостью вашего ума! И здорово, полагаю, что такой человек как Andrey Khatimlianskii, которым также восхищаюсь давно, вступил в разговор.
Спасибо, что есть вы и вам подобные!
Какая разница получается? Тоже 10-15 мс?
Скорее всего, компилятор заменяет вызов функции прямым обращением к той же переменной.
Можно попробовать сделать замер в режиме профилирования, в этом случае не все оптимизации компилятора работают.
Вот полный вывод одного из замеров:
0)_Point: 2450485 | Point(): 2551454 |
1)_Point: 2533783 | Point(): 2484250 |
2)_Point: 2754030 | Point(): 2409606 |
3)_Point: 2406919 | Point(): 2389273 |
4)_Point: 2410046 | Point(): 2433121 |
5)_Point: 2419303 | Point(): 2404954 |
6)_Point: 2475729 | Point(): 2378392 |
7)_Point: 2420821 | Point(): 2379233 |
8)_Point: 2459982 | Point(): 2425660 |
9)_Point: 2483506 | Point(): 2427472 |
_Point равно Point() 0 раз; _Point быстрее Point() 2 раз; _Point медленнее Point() 8 раз
Например, во второй строке: 2533783 - 2484250 = 49533. Примерно 50 мс, если не путаю. Но здесь у меня на порядок больше итераций (миллион против ста тысяч прежде), так что, получается, если вернуться к прежнему порядку, то будет 5 мс.
UPD: а вот в третьей строке уже ~340 мс разница, если не путаю (2754030 - 2409606 = 344424), т.е. примерно 34 мс при предыдущем порядке.
Я прогнал несколько десятков раз скрипт, других результатов не получил: у меня получается, что Point() быстрее, чем _Point почти всегда если замерять при помощи GetMicrosecondCount(). Раньше (с GetTickCnt()) туда-сюда гуляло в пределах погрешности, а теперь довольно равномерный результат.
Для замены вызова функции переменной смущает что теперь перекос в одну сторону. Правда я скорее поверю, что где-то ошибка у меня в коде, чем в корректность таких результатов. Но не нахожу ошибок, возможно глаз замылен.
С профилированием запустил, но результат будет весьма не скоро, судя по всему :)
Немного поправил начальный скрипт, при профилировании таки ясно видно _Point быстрее.
Немного поправил начальный скрипт, при профилировании таки ясно видно _Point быстрее.
Я думаю, что не совсем корректно замерять количество микросекунд до и после одной-единственной операции присвоения - слишком быстро она происходит (наверняка на уровне погрешности). И сколько раз Вы прогнали скрипт?
Вот замерять до и после n операций (циклами это как раз и решается), в моём последнем варианте миллиона - да, кажется уже более логичным.
P.S. Вы лучше не на первый скрипт посмотрите, а на последний. Может Вы там найдёте ошибку, которую я не вижу?
Я думаю, что не совсем корректно замерять количество микросекунд до и после одной-единственной операции присвоения - слишком быстро она происходит (наверняка на уровне погрешности). И сколько раз Вы прогнали скрипт?
да, итоговый результат некоректный в основном время выполнения GetMicrosecondCount. Прогонять смысла нет, в профилировщике посмотрите.
Да, в профилировщике у моего последнего скрипта такой результат (как раз только что был выдан первый):
1)_Point: 51861700 | Point(): 98397428 |
2)_Point: 50206705 | Point(): 97734933 |
3)_Point: 50598818 | Point(): 98480134 |
4)_Point: 50679116 | Point(): 98556775 |
5)_Point: 50897861 | Point(): 99643446 |
6)_Point: 51008238 | Point(): 100550776 |
7)_Point: 52067197 | Point(): 101059095 |
8)_Point: 51511150 | Point(): 102275405 |
9)_Point: 52752728 | Point(): 105406043 |
_Point равно Point() 0 раз; _Point быстрее Point() 10 раз; _Point медленнее Point() 0 раз
Разница в 2 раза.
А теперь новый вопрос - идентична ли работа программ в обычном режиме режиму профилировщика? Т.е. там ли мы охотимся на ведьм, или для практического применения логичней изучать "обычный" режим?
В обычном режиме я получаю чертовски странный результат (Point() быстрее чем _Point), и я почти уверен, что мои программы в нормальных условиях будут работать не в том же режиме, что и под профилировщиком.
В обычном режиме я получаю чертовски странный результат (Point() быстрее чем _Point), и я почти уверен, что мои программы в нормальных условиях будут работать не в том же режиме, что и под профилировщиком.
У меня тож самое получалось и это таки странно, не может быть вызов функции быстрее присвоения значения переменной. Вопщем наверное неважно, что написано - главное, как скомпилируется)