Сообщение Re[10]: Java vs C# vs C++ от 26.09.2015 23:45
Изменено 26.09.2015 23:46 alexzzzz
Здравствуйте, alex_public, Вы писали:
_>Ну во-первых твой код — это не C#, а unsafe C#, что существенно. Причём даже не просто unsafe (в смысле модификатора), а ещё и дико страшный из-за необходимости обхода всех штатных тормозов.
Не понял конец фразы. Тормоза, связанные с закреплением объектов в памяти, они как Лохнесское чудовище — все про них слышали, но никто не видел. Надо просто соблюдать рекомендации.
_>Т.е. писать так код постоянно — это убиться. )))
Навскидку для 90% кода скорость вообще не важна — делаешь его красивым и удобным в обслуживании. Для ещё 9% просто используешь быстрый алгоритм, подходящие типы коллекций, многопоточность. В оставшийся случаях можно пошаманить:
— самодельные специфические коллекции,
— unsafe,
— Mono.Simd / System.Numerics,
— вызов нативного кода (самый неудобный вариант).
Короче, такого кода, где unsafe имеет смысл, надо пол-процента (если вообще надо). И пофиг, как он выглядит. Ты же не пишешь весь свой код интринзиками.
_>Ну вообще то изначально этот код был просто специально для теста выбран (до него кстати в тесте был другой, с плавающей точкой, но там возникли большие неоднозначности в сравнения разных языков). Но у него естественно есть реальный прообраз. И нет, это естественно не blur (зачем может быть blur настолько многократный?), а одна из разновидностей клеточного автомата.
Прикольно. Я свой вариант кода без изменений взял из моего старого исходника блюра Но раз это не он, то у меня надо заменить
Впрочем, на скорость расчётов это не влияет.
Имхо, с тысячами итераций тебе бы надо на GPU перейти, а не мучить С++.
_>Ну во-первых твой код — это не C#, а unsafe C#, что существенно. Причём даже не просто unsafe (в смысле модификатора), а ещё и дико страшный из-за необходимости обхода всех штатных тормозов.
Не понял конец фразы. Тормоза, связанные с закреплением объектов в памяти, они как Лохнесское чудовище — все про них слышали, но никто не видел. Надо просто соблюдать рекомендации.
_>Т.е. писать так код постоянно — это убиться. )))
Навскидку для 90% кода скорость вообще не важна — делаешь его красивым и удобным в обслуживании. Для ещё 9% просто используешь быстрый алгоритм, подходящие типы коллекций, многопоточность. В оставшийся случаях можно пошаманить:
— самодельные специфические коллекции,
— unsafe,
— Mono.Simd / System.Numerics,
— вызов нативного кода (самый неудобный вариант).
Короче, такого кода, где unsafe имеет смысл, надо пол-процента (если вообще надо). И пофиг, как он выглядит. Ты же не пишешь весь свой код интринзиками.
_>Ну вообще то изначально этот код был просто специально для теста выбран (до него кстати в тесте был другой, с плавающей точкой, но там возникли большие неоднозначности в сравнения разных языков). Но у него естественно есть реальный прообраз. И нет, это естественно не blur (зачем может быть blur настолько многократный?), а одна из разновидностей клеточного автомата.
Прикольно. Я свой вариант кода без изменений взял из моего старого исходника блюра Но раз это не он, то у меня надо заменить
var buffer = new int[image.Length];
наvar buffer = (int[])image.Clone();
Впрочем, на скорость расчётов это не влияет.
Имхо, с тысячами итераций тебе бы надо на GPU перейти, а не мучить С++.
Re[10]: Java vs C# vs C++
Здравствуйте, alex_public, Вы писали:
_>Ну во-первых твой код — это не C#, а unsafe C#, что существенно. Причём даже не просто unsafe (в смысле модификатора), а ещё и дико страшный из-за необходимости обхода всех штатных тормозов.
Не понял конец фразы. Тормоза, связанные с закреплением объектов в памяти, они как Лохнесское чудовище — все про них слышали, но никто не видел. Надо просто соблюдать рекомендации.
_>Т.е. писать так код постоянно — это убиться. )))
Навскидку для 90% кода скорость вообще не важна — делаешь его красивым и удобным в обслуживании. Для ещё 9% просто используешь быстрый алгоритм, подходящие типы коллекций, многопоточность. В оставшихся случаях можно пошаманить:
— самодельные специфические коллекции,
— unsafe,
— Mono.Simd / System.Numerics,
— вызов нативного кода (самый неудобный вариант).
Короче, такого кода, где unsafe имеет смысл, надо пол-процента (если вообще надо). И пофиг, как он выглядит. Ты же не пишешь весь свой код интринзиками.
_>Ну вообще то изначально этот код был просто специально для теста выбран (до него кстати в тесте был другой, с плавающей точкой, но там возникли большие неоднозначности в сравнения разных языков). Но у него естественно есть реальный прообраз. И нет, это естественно не blur (зачем может быть blur настолько многократный?), а одна из разновидностей клеточного автомата.
Прикольно. Я свой вариант кода без изменений взял из моего старого исходника блюра Но раз это не он, то у меня надо заменить
Впрочем, на скорость расчётов это не влияет.
Имхо, с тысячами итераций тебе бы надо на GPU перейти, а не мучить С++.
_>Ну во-первых твой код — это не C#, а unsafe C#, что существенно. Причём даже не просто unsafe (в смысле модификатора), а ещё и дико страшный из-за необходимости обхода всех штатных тормозов.
Не понял конец фразы. Тормоза, связанные с закреплением объектов в памяти, они как Лохнесское чудовище — все про них слышали, но никто не видел. Надо просто соблюдать рекомендации.
_>Т.е. писать так код постоянно — это убиться. )))
Навскидку для 90% кода скорость вообще не важна — делаешь его красивым и удобным в обслуживании. Для ещё 9% просто используешь быстрый алгоритм, подходящие типы коллекций, многопоточность. В оставшихся случаях можно пошаманить:
— самодельные специфические коллекции,
— unsafe,
— Mono.Simd / System.Numerics,
— вызов нативного кода (самый неудобный вариант).
Короче, такого кода, где unsafe имеет смысл, надо пол-процента (если вообще надо). И пофиг, как он выглядит. Ты же не пишешь весь свой код интринзиками.
_>Ну вообще то изначально этот код был просто специально для теста выбран (до него кстати в тесте был другой, с плавающей точкой, но там возникли большие неоднозначности в сравнения разных языков). Но у него естественно есть реальный прообраз. И нет, это естественно не blur (зачем может быть blur настолько многократный?), а одна из разновидностей клеточного автомата.
Прикольно. Я свой вариант кода без изменений взял из моего старого исходника блюра Но раз это не он, то у меня надо заменить
var buffer = new int[image.Length];
наvar buffer = (int[])image.Clone();
Впрочем, на скорость расчётов это не влияет.
Имхо, с тысячами итераций тебе бы надо на GPU перейти, а не мучить С++.