Здравствуйте, ·, Вы писали:
·>Здравствуйте, Serginio1, Вы писали:
S>>>> Хотя лично считаю, что для этого лучше всего подойдет C++ с хорошим менеджером памяти.
S>>·>Т.е. .net не подходит. Что и требовалось доказать. Считаю вопрос закрытым.
S>> Мне интересно не .Net, а как с этим справляется твоя хваленая Java
·>Хорошо справляется с помощью zing. Azul обещает задержки <10ms. Ты считаешь, что они лгут?
Я хочу увидеть этот тест на zing.
S>> особенно в сравнении с кодом на C++
·>Тебе интересно, ты и сравнивай. Создавай новый топик, ищи оппонетнов и там рассуждай. Тут мы обсуждаем "dotnet vs java".
Ну дык ты же говоришь, что Java лучше всех. А хочется сравнить.
S>>На этом самом алгоритме. При этом я могу сделать класс на C++
·>И накой когда сдался .net? Шоб було?
Я могу использовать манакед GC и нативный менеджер памяти. Это расширяет возможности.
S>> и из .Net дергать его методы.
·>Круто, конечно. И что конкретно ты будешь измерять? Цель тех тестов — измерить характеристики GC, его применимость для LL-систем.
·>Методы явы тоже можно из С++ дёргать. И что?
Задача сделать приложение с минимальными задержками, при этом потратить минимум усилий и денег.
S>>При этом у меня будут потери только на копировании, но в задержек не будет. Так, что .Net подходит.
·>Ровно до того момента как сработает GC.
А там собирать то нечего. Проблема то в генерации огромного количества объектов и обновлении кэша размером 200 кб.
На обычных задачах GC справляется.
S>>https://msdn.microsoft.com/en-us/library/ms235281.aspx
S>>А считать то голословно ты можешь, что угодно.
·>Голословен пока только ты. И всё от сабжа постоянно уходишь в сторону нейтива.
Я ухожу в сторону оптимального использования натива в манагед и наоборот.
А вот так и не привел пример на Java. Всем интересно посмотреть. Не только мне.
А я могу написать код с копированием.
Это по сути аналог использования классов на C++.
var Кэш=new byte[2000][];
while (true)
{
var text = new string((char)random.Next(start, end + 1), 1000);
stringCache.Set(text.GetHashCode(), text);
// Use 80K, If we are > 85,000 bytes = LOH and we don't want these there
var bytes = new byte[80 * 1024];
random.NextBytes(bytes);
var i=bytes.GetHashCode() % размерКэша;
var массив=Кэш[i];
if (массив==null)
Кэш[i]=массив;
else
bytes.CopyTo(массив,0);
threadCounter++;
Thread.Sleep(1); // So we don't thrash the CPU!!!!
}
});