![]() |
|
Модераторы: Daevaorn Страницы: (8) Все « Первая ... 2 3 [4] 5 6 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
А студия 2005 все-равно выдает 28 байт против 4х в mingw (gcc).
|
||||||
|
|||||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
ну еще-бы, он вроде-бы должен проверку итераторов отключать да, и
|
|||
|
||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Блин, и в чём мораль? Смотрим заголовычные файлы МинГВ. Все данные строки хранятся через некий _M_dataplus, в котором есть:
И куча реинтерпрет-кастов затем. Чтобы получить, например, _Rep:
Зачем всё так сложно? Скорей всего виноват референс-каунтинг. Если хочется сравнить реально память, занимаемую строками - создаём огромное количество этих строк и смотрим, сколько памяти жрёт процесс. |
||||
|
|||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
А я и так и так пробывал, разницы нету Последовал совету Любителя, вот код:
Создается 6 млнов экземпляров пустых классов: ![]() В итоге: mingw (gcc) - 141 896 kb msvc - 235 716 kb Это сообщение отредактировал(а) SABROG - 30.7.2008, 15:39 |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
SABROG - Мда... Я уже поднимал тему по замене std::string из-за малого функционала.
Похоже теперь появился еще один повод искать замену std::string С каждым днем все больше радости -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
А если хотя бы 1 символ в строку записать? Может в случае mingw для пустых строк просто не хранится никакой служебной инфы. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
И ещё - везде надо включать оптимизацию. Иначе сравнение не объективно.
|
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Ну для gcc -O3 я могу прописать, на другие ключи у меня знаний не хватит. А для cl я вообще не знаю ключей оптимизации. С таким кодом я вообще получил неожиданные результаты:
gcc - 376 604kb msvc - 235 716kb Попробывал провести тест снова с пустыми классами и опять msvc продул, а с заполненными продувает gcc. Скомпилил прогу с помощью gcc с максимальной оптимизацией -O3, результат никак не изменился. Это сообщение отредактировал(а) SABROG - 30.7.2008, 16:27 |
||||
|
|||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
немного потестировал пример из блога deepencpp для разных строк
для коротких строк l1 и l2 - длины строк, конкретные значения не важны, важно отношение - больше, меньше...
для длинных
честно говоря я думал что на длинных строках результаты будут равны, но все оказалось еще интереснее... Добавлено через 44 секунды зы компилятор vs2005, ключи /O2, /Ot |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
/O1 - size /O2 - speed /Ox - full то то -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Добавил ключи /Ox и -O3 соотв, результаты не изменились никак вообще. Оптимизация вообще никак не повлияла на тесты с пустыми и заполненными классами. Т.е. осталось все прежним. Если сравнивать два теста с пустыми классами и заполненными, то можно увидеть, что размер занимаемой памяти для msvc не меняется вообще. Видимо msvc проигрывает в первом тесте из-за того, что резервирует память изначально, чего не делает gcc. Это сообщение отредактировал(а) SABROG - 30.7.2008, 16:40 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Гм... Я в ступоре
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Вот кстати еще один вариант:
Результат: msvc - 235 716kb gcc - 282 932kb А тут я решил увеличить количество строк до 90 млн.ов c непустыми классами, результат мне не очень понравился: gcc - 563 712kb msvc - 352 452 kb Это сообщение отредактировал(а) SABROG - 30.7.2008, 16:59 |
|||
|
||||
| Lycifer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
Boost::array
STL == как на ресурсы, работать быстро - гдк то слышал, хотя работать быстро не получается(во первых память не вовремя олсвобождается, а во вторых new,delete,malloc,realloc - медленнеы так как ищют дырки в памяти, то и есть свободные места) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |