Re[51]: Работа - с чего начать: С++ или С#?
От: esil  
Дата: 20.03.09 23:10
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, esil, Вы писали:


E>>Здравствуйте, gandjustas, Вы писали:


G>>>Стоит учесть что каждый проход GC в программе на C# очищает вс первое поколение в таком случа и двигание объектов не происходит, то немного исправляет результат в пользу C#, но даже если бы код на C# работал в 2 раза медленее, то он оказался бы в 3 раза быстрее стандартного аллокатора для C++.


E>>И вот таки да, предположим у нас получилость так, что из-за частых выделений/освобождений памяти наш продукт на С++ работает недопустимо медленно. Что можно с этим сделать? Для начала собрать профиль размеров выделяемых блоков, который нам покажет, что большинство выделяемых блоков имеют размер 256 байт. А дальше можно сделать например так:


E>>
E>>//поскипано
E>>


G>Только делать так не нужно. В первую очередь стоит заняться алгоритмический оптимизацией или даже архитектурной, а не кидаться писать кастомный аллокатор.

G>Причем этот подход работает для любых языков.

Может быть да, может быть нет. Может быть архитектура крива, а может быть она правильна, хотя в ней аллоцируется куча мелких объектов. Это вопрос чего угодно (религии, политики, философии), но только не сравнения аллокаторов.
Верным остаётся одно: на любой дурацкий синтетический тест найдёт столь же дурацкий аллокатор, который этот тест "уделает".

Лично мне комфортно от того, что можно пробовать строить различные архитекутры, не думая изначально о том, сколько каких мелких объектов где выделяется, потому что в случае чего можно расчехлить тяжёлую артиллерию. Кому-то такой подход кажется нормальным, кому-то нет. Но по крайней мере есть выбор. Хотя наличие выбора может кому-то тоже показаться плохой идеей. ))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.