Добрый день.
Работаем над контролом по отрисовке векторных карт. За раз отрисовывается примерно 20 тысяч примитивов. На данный момент отрисовка происходит в одном методе. Для более гибкого варианта отрисовки думаем добавить объект СтратегияОтрисовки, которая будет рисовать примитивы в зависимости от типа слоя карты. Вопрос в следующем — так как стратегия абстрактная то метод отрисовки будет виртуальный. Сильно ли скажется это на производительности — отрисовка всего в одном методе или 20 тысяч вызовов виртуальных методов с передачей 5 параметров (3 объекта и 2 структуры)? Хотелось бы знать примерный проигрыш по времени.
Здравствуйте, paz, Вы писали:
paz>Добрый день.
paz>Работаем над контролом по отрисовке векторных карт. За раз отрисовывается примерно 20 тысяч примитивов. На данный момент отрисовка происходит в одном методе. Для более гибкого варианта отрисовки думаем добавить объект СтратегияОтрисовки, которая будет рисовать примитивы в зависимости от типа слоя карты. Вопрос в следующем — так как стратегия абстрактная то метод отрисовки будет виртуальный. Сильно ли скажется это на производительности — отрисовка всего в одном методе или 20 тысяч вызовов виртуальных методов с передачей 5 параметров (3 объекта и 2 структуры)? Хотелось бы знать примерный проигрыш по времени.
Самый простой, надежный и убедительный способ — написать прототип и измерить реальные потери.
Здравствуйте, blblx, Вы писали:
B>Самый простой, надежный и убедительный способ — написать прототип и измерить реальные потери.
Миллион вызовов занял 13 милисекунд. можно пренебречь
Здравствуйте, paz, Вы писали:
paz>Добрый день.
paz>Работаем над контролом по отрисовке векторных карт. За раз отрисовывается примерно 20 тысяч примитивов. На данный момент отрисовка происходит в одном методе. Для более гибкого варианта отрисовки думаем добавить объект СтратегияОтрисовки, которая будет рисовать примитивы в зависимости от типа слоя карты. Вопрос в следующем — так как стратегия абстрактная то метод отрисовки будет виртуальный. Сильно ли скажется это на производительности — отрисовка всего в одном методе или 20 тысяч вызовов виртуальных методов с передачей 5 параметров (3 объекта и 2 структуры)? Хотелось бы знать примерный проигрыш по времени.
Конечно это очень сильно зависит от железа, но найти такой антиквариант на котором 20 тысяч вызовов будут видных в микроскоп не просто. По сведением
отсюда, Core 2 Duo @ 2.66 GHz делает около 600 миллионов вызовов в секунду.
Главное, чтобы ваши методы не были дженерик-методами (см. детали по ссылке).