Re[27]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.03.09 17:39
Оценка: -1 :)
Здравствуйте, CreatorCray, Вы писали:

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


G>>Эта наивная реализация во многих местах осталась и по сей день.

CC>Это проблемы тех мест а не С++ в целом.
Да это вообще проблема неуправляемых сред.

И>>>Достаточно в таск менеджере взглянуть на кол-во используемой памяти .net прогой и С++ с эквивалентной функциональностью, чтобы понять, что ты гонишь.

G>>Покажите две программы на .net и C++ с эквивалнтной функциональностью сложнее HelloWorld, потом посмотрим кто гонит.
G>>Кроме того цифра в таск менеждере ни о чем не говорит, просто сверните приложение, будете удивлены.
CC>Ты не в тот таскманагер смотришь, тебе уже сообщали.
Пор цифирке в таскабаре — не ко мне, они меня мало интересуют. Я производидтельность профайлером меряю.

G>>>>3)Выделение памяти таким алгоритмом создет фрагментацию памяти, то есть остаются блоки невыделенной памяти малых размеров.

И>>>Угу, только проблема фрагментации кучи есть и в .net, кстати, как и мемори лики.
G>>Доказательства? Опять отправляю вас читать как работает выделение памяти и сборка мусора в .NET.
CC>Кстати, как там на данный момент обстоит дело с GC в условиях наличия за-pin-ованых объектов?
То что выделено до запиненного объекта — не уплотняется. Перерасход памяти из-за большого количесва запиненных объекктов — признак неграмотности программиста

G>>Не зачастую, всегда, но GC работает в сотни раз реже, чем выделение-совобождение памяти стандартным аллокатором.

CC>Это как напишешь. В unmanaged в реальном коде где надо performance выделение/освобождение памяти выносят "за скобки" и делают крайне редко.
Это примерно тоже самое что performance-critical код написать на С, а потом интеропать с ним из managed.

И>>>а) есть стэк;

G>>Стек заставляет копировать объекты чаще, чем нужно.
CC>С чего бы вдруг?
Передача объектов по значению вызывает копирование. Если бы такой проблемы не было, то не придумывали бы ссылки.

И>>>b) есть placement new;

G>>Теже яйца что и кастомный аллокатор, только сбоку
CC>Только без затрат на выделение памяти. Т.е. совсем бесплатный считай.
А откуда возьмется память в которой будет делаться placement new ?

И>>>c) на мелких объектах свет клином не сошелся — можно и без них обойтись в критичной к скорости части;

G>>Я тоже говорю что критичные по скорости вещи надо писать на C, а некритичные, на более высокоуровневых языках. C++ в таком раскладе места нет.
CC>Как показывает практика — есть. В таком контексте С++ от С мало чем отличается, только поудобнее разве что. Не надо только на нём александрескить и говнокодить.
Испоьзовать C++ как C_с_классами конечно можно, только это получается ну очень низкоуровневое программирование.
Такое использование может себе только гугл позволить, у него денег много.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.