Ошибки, баги, вопросы - страница 1573

 
Alexey Navoykov:

Максимум в 150 строк

Это очень большая и неправильная функция.
 
Vasiliy Sokolov:
Не понимаю о чем Вы. Имею несколько нереально сложных проектов на MQL с объемами кода более 20 000 тысяч строк кода. В новых билдах компилироуется на раз два. За все время только два раза проблемы были. Один раз из-за моего косяка, другой из-за косяка разработчика. 

Ну значит вы счастливчик. В вашем коде не встретились конструкции, имеющиеся в моём коде.  Что тут странного?

Пролистайте пару страниц выше, там человек тоже поймал кучу багов в новом билде, некоторые из которых трудноуловимые.  Думаете, он их нарочно выискивал?

 
Alexey Navoykov:

Ну значит вы счастливчик. В вашем коде не встретились конструкции, имеющиеся в моём коде.  Что тут странного?

Пролистайте пару страниц выше, там человек тоже поймал кучу багов в новом билде, некоторые из которых трудноуловимые.  Думаете, он их нарочно выискивал?

Продемонстриуйте пример тормоза с возможностью воспроизведения, пожалуйста.

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


Про размеры функций и общий размер программы вы неправы. Размер отдельных функций прямо и нелинейно влияет на оптимизацию каждой конкретной функции как из-за увеличения синтаксического дерева, так и из-за многопроходности оптимизатора. Мелкие функции оптимизируются влет.

 
Alexey Navoykov:

Ну значит вы счастливчик. В вашем коде не встретились конструкции, имеющиеся в моём коде.  Что тут странного?

Пролистайте пару страниц выше, там человек тоже поймал кучу багов в новом билде, некоторые из которых трудноуловимые.  Думаете, он их нарочно выискивал?

1) Это интересно какие же такие конструкции Вы использовали, что в моем коде их нет? Объем моего кода многие тысячи строк, а Ваших конструкций нет? Это что-то супер уникальное наверное?

2) По факту, в предыдущем билде действительно была ошибка internal commpiler error возникающая в случае взаимной ссылки классов друг на друга. Это косяк разрабов, но ее пофиксили. Других ошибок не припомню.

 
Vasiliy Sokolov:

2) По факту, в предыдущем билде действительно была ошибка internal commpiler error возникающая в случае взаимной ссылки классов друг на друга. Это косяк разрабов, но ее пофиксили. Других ошибок не припомню.

https://www.mql5.com/ru/forum/1111/page1591#comment_2463820

И где здесь взаимная ссылка классов друг на друга?

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

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум трейдеров
Файлы:
Test114.mq5  2 kb
 
A100:

https://www.mql5.com/ru/forum/1111/page1591#comment_2463820

И где здесь взаимная ссылка классов друг на друга?

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

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

//+------------------------------------------------------------------+
//|                                                      Test116.mq5 |
//|                                                                  |
//+------------------------------------------------------------------+
bool is( const string type, bool )
{
        return ( type == "1" || type == "2" || type == "3" || type == NULL );
}
bool _is( string type ) { return is( type, false ); }
//+------------------------------------------------------------------+
template<typename T>
bool __is( T ) { return _is( typename( T )); }
//+------------------------------------------------------------------+
#define IS( T )         __is( T(0))
//+------------------------------------------------------------------+
template<typename T>
int sh( T t )
{
        T tt = 0x1;
        for ( int i = 0; i < 4; i++, tt <<= 1 )
                if ( (t & tt) == tt )
                        return i;
        return -1;
}
//+------------------------------------------------------------------+
class D { public:
template<typename T1, typename T2>                                     
                        T2                              g( T1 t1, T2, int sh = -1 ); 
};                                                                     
template<typename T1, typename T2>                                     
T2 D::g( T1 t1, T2, int sh )
{                                                                      
        sh = sh( t1 );                                   
        T2 t2 = T2(t1) >> 1;
        return (sh( t1 ) & sh) == sh( t1 ) && IS( T2 ) ? 1 : 0;
}                                                                      
//+------------------------------------------------------------------+
class M : public D {
        virtual void f1() { g( 0, 0 ); }
};
//+------------------------------------------------------------------+
class A {};
void g( A* ) export {}
class B { public:
        void h() { A a; g( &a ); }
};
class C { public:
        void f() {}
};
void OnStart()
{
        C c;
        c.f();
}
//+------------------------------------------------------------------+
 
Renat Fatkhullin:

Продемонстриуйте пример тормоза с возможностью воспроизведения, пожалуйста.

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

Я же писал, что это большой проект, общим объём всех исходников около 1 Мб.   Как же вам продемонстрировать тормоза?  Выслать все коды чтоль?  Сам понимаете, это невозможно.  А компиляция отдельных кусочков, разумеется, идёт значительно быстрее.

И что вы имеете ввиду под "голословными заявлениями"?  То что ваш  оптимизирующий компилятор существенно тормозит?  И то что вас это мало волнует?  Что здесь голословного?

Вот ссылка на обсуждение из октября прошлого года, когда вы только ввели эту глобальную оптимизацию:  https://www.mql5.com/ru/forum/1111/page1424#comment_1981722

Человек пишет:

Другой код - обратите внимание на время - оно выросло наверное в 20 раз

 

И далее вы отвечаете:

Это новый оптимизирующий компилятор для MQL5 (в MQL4 его нет) так работает.

За более качественный целевой код приходится платить более долгой компиляцией

Ну и далее там ещё несколько человек, включая меня, также пожаловались на медленную компиляцию.  Но по вашим ответам видно, что вас заботит лишь "более качественный целевой код", и некий мифический "прирост скорости исполнения от 2 до 10 раз",  хотя в реальных рабочих проектах я таких ускорений и близко не наблюдал.

Как я уже говорил, на последнем билде (от 22 апреля) я протестировать не смог, т.к. возникли баги при компиляции.  Но я полагаю, что скорость компиляции там такая же медленная,  коль вы нигде не анонсировали ускорение компилятора в новом билде.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • отзывов: 2
  • www.mql5.com
Форум трейдеров
 
Vasiliy Sokolov:

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

Один тут "психоаналитик" мне диагнозы ставит, второй приписывает реверсинженеринг.

Просто признайтесь что вам еще далеко до моего уровня.

Вот здесь описано откуда берутся ошибки (если у вас еще сохранилась способность слушать, а не думать за других). Если код упрощен в сотни раз и обезличен для локализации абстрактной ошибки, то это не значит что он практически не применим

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Vladimir Pastushak, 2016.05.03 14:47

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

По мимо этого весьма хорошо что есть опытные прогеры которые могут найти баг и сообщить о нем. Иначе когда сам натыкаешься на баг то приходится долго ждать его устранения. (Долго=следующий билд) 

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • отзывов: 5
  • www.mql5.com
Форум трейдеров
 
Alexey Navoykov:

Я же писал, что это большой проект, общим объём всех исходников около 1 Мб.   Как же вам продемонстрировать тормоза?  Выслать все коды чтоль?  Сам понимаете, это невозможно.  А компиляция отдельных кусочков, разумеется, идёт значительно быстрее.

И что вы имеете ввиду под "голословными заявлениями"?  То что ваш  оптимизирующий компилятор существенно тормозит?  И то что вас это мало волнует?  Что здесь голословного?

Голословно, когда вы сами не подкрепляете свои слова своими доказательствами.

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


Ну и далее там ещё несколько человек, включая меня, также пожаловались на медленную компиляцию.  Но по вашим ответам видно, что вас заботит лишь "более качественный целевой код", и некий мифический "прирост скорости исполнения от 2 до 10 раз",  хотя в реальных рабочих проектах я таких ускорений и близко не наблюдал.
Оно есть и существенное. В указанных размерах.


Как я уже говорил, на последнем билде (от 22 апреля) я протестировать не смог, т.к. возникли баги при компиляции.  Но я полагаю, что скорость компиляции там такая же медленная,  коль вы нигде не анонсировали ускорение компилятора в новом билде.

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

А если не верить, то выложить на форум лог компиляции для разбора. Там и ошибки и время компиляции есть.

 
Vasiliy Sokolov:

1) Это интересно какие же такие конструкции Вы использовали, что в моем коде их нет? Объем моего кода многие тысячи строк, а Ваших конструкций нет? Это что-то супер уникальное наверное?

2) По факту, в предыдущем билде действительно была ошибка internal commpiler error возникающая в случае взаимной ссылки классов друг на друга. Это косяк разрабов, но ее пофиксили. Других ошибок не припомню.

Уважаемый, к чему весь этот флуд?  Я что, телепат, чтоб знать какие конструкции есть в вашем коде, а каких нет?   Для примера я вам уже указал на предыдущие страницы этого топика, где человек приводил свои конструкции, приводящие к багам, которые очевидно встретились в его проектах. А у меня оказались другие конструкции, тоже приводящие к багам.  Выискивать и обходить их у меня нет желания, сыт уже по горло этим.   Ну а у вас таких конструкций не встретилось - и что с того?   Каждый пишет по-своему.   Так что давайте не будем всё мерять по себе.  

У меня тоже была internal compiler error, но там вроде другая причина была, но не суть.  Баги возникают постоянно, об этом речь.