Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Насчет инлайна (число прочтений - 6082 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Насчет инлайна
16. Марта 2008 :: 20:46
Печать  
Uzhast

Попробуй еще поиграть с ключиками типа

/Qinline-max-size=<n>

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

Чтобы понять, что же там инлайнится вот такая штука есть (работает архимедленно, но оно и надо только иногда)

/Qopt-report

  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #1 - 17. Марта 2008 :: 04:55
Печать  
kms писал(а) 16. Марта 2008 :: 20:46:
Uzhast

Попробуй еще поиграть с ключиками типа

/Qinline-max-size=<n>

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

Чтобы понять, что же там инлайнится вот такая штука есть (работает архимедленно, но оно и надо только иногда)

/Qopt-report


Поиграть попробую, но, сдается мне, что неявные конструкторы и деструкторы все равно будут инлайниться Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Насчет инлайна
Ответ #2 - 17. Марта 2008 :: 10:32
Печать  
Обязательно будут. Улыбка
Но в пределах ограничений - по умолчанию 230 байт на один инлайн, а это имхо в общем случае многовато.

А вот базовый функционал из шаблонов она за тебя точно не вынесет.
Я, кстати, тоже к этому же пришел - а куда деваться.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #3 - 17. Марта 2008 :: 10:50
Печать  
А можно подробнее, к чему тема?
У меня впечатление, что либо вы продолжаете свой разговор, либо первые посты удалены Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Насчет инлайна
Ответ #4 - 17. Марта 2008 :: 11:08
Печать  
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #5 - 18. Марта 2008 :: 08:32
Печать  
ОФФ: Олег, подскажи, где можно качнуть СПП-юнит и почитать, как его настроить/использовать?
Для vc6 ты этот пакет пробовал юзать?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #6 - 19. Марта 2008 :: 19:25
Печать  
artbear писал(а) 17. Марта 2008 :: 10:50:
А можно подробнее, к чему тема?
У меня впечатление, что либо вы продолжаете свой разговор, либо первые посты удалены Улыбка

Это просто настоя дже понима дру дру с полусло  Очень довольный
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #7 - 19. Марта 2008 :: 19:25
Печать  
artbear писал(а) 18. Марта 2008 :: 08:32:
ОФФ: Олег, подскажи, где можно качнуть СПП-юнит и почитать, как его настроить/использовать?
Для vc6 ты этот пакет пробовал юзать?

http://sourceforge.net/projects/cppunit/

Когда я его качал, он был только под VC6.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #8 - 20. Марта 2008 :: 06:52
Печать  
Олег, а твои впечатления, найденные баги, удобство написания тестов и т.д. опиши, плиз Улыбка
ЗЫ твой блог про твою правку СППЮнит я уже прочел.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #9 - 20. Марта 2008 :: 07:40
Печать  
artbear писал(а) 20. Марта 2008 :: 06:52:
Олег, а твои впечатления, найденные баги, удобство написания тестов и т.д. опиши, плиз Улыбка
ЗЫ твой блог про твою правку СППЮнит я уже прочел.

Дело в том, что CppUnit был первой системой тестирования, которая мне подвернулась. Возможно, она не самая лучшая - здесь я оценить не могу, т.к. вплотную использовал только CppUnit. Багов в нем вроде бы не находил кроме разве что:

1) когда пытался использовать GUI-модуль в компоненте, он подвисал - поэтому пришлось интегрировать CppUnit с 1С. Впрочем, так даже лучше получилось - меньше окон вылазит.

2) Пухловатый код CPPUNIT_ASSERT'а. Но это исправляется. Но про это ты уже читал Улыбка

Основное неудобство CppUnit из коробки - многословность в описании набора тестов. Некоторыми правками многословность можно уменьшить, но некоторая избыточность все же остается.

А так, в общем-то, достаточно удобно.

Например, уже есть набор предопределенных макросов: для проверки логического условия, для проверки равенства объектов, для проверки равенства величин типа double, для проверки того, что код выкидывает или не выкидывает исключение и т.д.

Где-то на РСДН была тема, как улучшить макросы CppUnit, чтобы при ошибке они выдавали более подробную информацию. Например, нужно проверить условие a + b > c.
Пишем CPPUNIT_ASSERT (a + b > c). При ошибке он выдаст что-то типа
assertion failed: a + b > c
Переделанный макрос выдаст: assertion failed: a + b > c : 2 + 3 > 6

Если код теста приводит к AV, то тестирование не прекращается - и обрабатываются все тесты. В принципе, это должно быть удобно для случаев, когда на проход всех тестов нужно несколько часов - здесь остановка тестирования из-за одного глючного теста была бы крайне плохим вариантом. Хорошо, что это не мой случай - все тесты прогоняются за 1-2 сек. Улыбка

Вообще, возможно есть более удобные системы юнит-тестирования - например, в boost. Вроде бы там даже уже есть "умные" ассерты типа того, что я описывал выше.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #10 - 26. Марта 2008 :: 21:13
Печать  
ЯДРЕНА КОРЕНЬ!!! ЭТО ПРОСТО ТРЫНДЕЦ КАКОЙ-ТО!!!
После пересборки всего 10-м Интелом (STLport + boost) и затем сборки Йокселя с опцией /Qinline-max-size:100 Йоксель сдулся с 3 мегов (с хвостиком) до размера 2.3 Мб!  Улыбка
  

happy.gif ( 1 KB | Загрузки )
happy.gif
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #11 - 28. Марта 2008 :: 16:04
Печать  
kms писал(а) 17. Марта 2008 :: 10:32:
Обязательно будут. Улыбка
Но в пределах ограничений - по умолчанию 230 байт на один инлайн, а это имхо в общем случае многовато.

Но время компиляции будет увеличиваться - конструкторы будут генериться в каждом cpp-файле, куда будет включен заголовок класса. А в свете "изменений" в 10-м компиляторе это уже становится "интересным" Улыбка

Кстати, как определил оптимальный размер для инлайна? Может ему вообще байт 16 выставить?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Насчет инлайна
Ответ #12 - 28. Марта 2008 :: 16:18
Печать  
Uzhast писал(а) 28. Марта 2008 :: 16:04:
Кстати, как определил оптимальный размер для инлайна? Может ему вообще байт 16 выставить?

Смотрел, как инлайнится сортировка массива целых.
Не факт, что он оптимален на все случаи жизни. Улыбка

Правда, чисто визуально генерируемый код смотрел, замеры времени не проводил.
А в принципе, было бы довольно интересно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Насчет инлайна
Ответ #13 - 28. Марта 2008 :: 18:05
Печать  
Поставил 16 байт. Размер модуля усох с 2.3Мб до 1.97 Мб. Время открытия mxl-таблицы весом 80Мб составило 33 секунды.

Вернул на 100 байт. Время открытия той же таблицы: 22 секунды.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Насчет инлайна
Ответ #14 - 28. Марта 2008 :: 18:22
Печать  
Uzhast писал(а) 28. Марта 2008 :: 18:05:
Поставил 16 байт. Размер модуля усох с 2.3Мб до 1.97 Мб. Время открытия mxl-таблицы весом 80Мб составило 33 секунды.

Вернул на 100 байт. Время открытия той же таблицы: 22 секунды.

Во, а теперь по дефолту собери (230).
И еще байт 500 из интереса.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать