Название: qtcreator 2.7.1 подчеркивает верный код Отправлено: deMax от Июля 02, 2013, 11:53 Код: class A Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: Bepec от Июля 02, 2013, 12:00 оффтоп: На будущее - теги html в теге code не работают.
Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: deMax от Июля 03, 2013, 10:34 Убрал html тег.
Можно ли в QtCreator поставить метку для анализатора кода, чтобы он пропускал это место. Весь код после этой строчки не попадает в автодополнение. Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: m_ax от Июля 03, 2013, 10:53 Откуда вообще такая необходимость в подобном костыле?
Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: CuteBunny от Июля 03, 2013, 11:41 Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: deMax от Июля 04, 2013, 08:43 Откуда вообще такая необходимость в подобном костыле? немного лирики bash.org:Цитировать 14:14 Лесной ООП, однако Смотрю код высоконагруженного сервера. В ядре обсчёта вижу код типа: func() { ObjectGame* OG=MainOG; while(OG->next!=NULL) { ia=(int*)OG+12; i=*ia; /* что-то делает*/ *ia=i; /* код функции, внутри функции ia претерпевает различные изменения*/ OG=OG->next; } } С большими глазами иду к прогеру, который это всё написал. Спрашиваю: почему он не пользуется методами Set и Get, и вообще, почему именно 12 байт? На что он мне отвечает: «Внутри кода функции есть ветвящийся цикл, в котором перебираются многие параметры объекта. Если пользоваться методами Set и Get, а это переход по адресу, причём у каждого объекта он свой, конвейер процессора офигеет и сбросится. Это плюс 30 тактов на каждый переход. Всего таких объектов в секунду надо обсчитать порядка нескольких миллионов. Частота ядра — три миллиарда операций в секунду. Отсюда вывод: идите вы лесом со своим ООП!» В том месте подключен си-шный код и места весьма нагруженные. Я понимаю, что быстродействие почти такое же (к указателю добавляем смещение массива, а тут к this добавим смещение a и смещение массива) Код: inline value(int i,int j) {return a[i][j];} но хочется работать с массивом через "[ i ] [ j ]" а не через "(i,j)". (много математических строк "v[ i ][ j ]", заменять их на "a->value(i,j)" некрасиво, тем более в формулах) p.s. creator 2.7.2 тоже подчеркивает. Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: ViTech от Июля 04, 2013, 11:10 Я, как и qtcreator 2.7.1 (и 2.7.2 тоже), давно не встречал таких странных конструкций :). Может чего не понимаю...
Выражения типа "float (&b)[2][2]" предлагается по всему коду таскать? Если ввести нормальный тип, то все становится намного понятней. Например, так: Код: typedef float Array_2x2[2][2]; Цитировать Если пользоваться методами Set и Get, а это переход по адресу, причём у каждого объекта он свой, конвейер процессора офигеет и сбросится. Программист с баша так же хорошо знает про inline методы класса как и про конвейер процессора? :) И, заодно, как компилятор выравнивает данные класса в памяти. Я бы ему предложил такой вывод: выходи из леса и учи С++.Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: CuteBunny от Июля 04, 2013, 11:13 Интересно... Получается, возврат ссылки на массив массивов лучше, чем перегрузить оператор []?
Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: ViTech от Июля 04, 2013, 11:29 Это смотря что от класса требуется. Я написал аналог того, что было у автора. Если надо будет передавать значение value в другие методы, то лучше :). Я так подозреваю, что в том классе много чего еще должно быть. Или вообще такой класс не нужен. Зависит от поставленной задачи.
Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: deMax от Июля 04, 2013, 14:37 Выражения типа "float (&b)[2][2]" предлагается по всему коду таскать? Если ввести нормальный тип, то все становится намного понятней. Например, так: Спасибо за напоминание про typedef.Код: typedef float Array_2x2[2][2]; если задать float a[2][2], то возврат typedef float Array_2x2[2][2] работает, а без жирной двойки нет, хотя эта двойка вообще не нужна. Программист из Баша не прав магическим числом 12, его надо было задать через offsetof. В критических участках кода даже функции лесом идут, а иногда и с++. (впрочем производительность растет, и частенько скорость разработки отодвигает оптимизацию). Название: Re: qtcreator 2.7.1 подчеркивает верный код Отправлено: b-s-a от Июля 05, 2013, 17:17 в критических местах надо начинать с включения опции -O3 компилятора. Если не помогло, то посмотреть дизассемблер и, если надо, ряд функций пометить inline. А за код "ia=(int*)OG+12;" надо руки на месте отрывать - это явно доступ к типичному элементу объекта.
|