Производительность номера класса - PullRequest
1 голос
/ 26 апреля 2011

Мне просто интересно узнать о производительности класса Number, а не об использовании, скажем, универсальных или даже целого ряда функций для обработки примитивных типов.

Очевидно, что примитивные типы были бы самым быстрым вариантом IПредполагалось бы, однако, что если снижение производительности не слишком велико, кодировщику, скорее всего, будет проще использовать класс Number или непатентованные значения вместо создания функции, которая принимает и возвращает long, double (и т. д.).

Я собираюсь сделать тест производительности из 3 упомянутых вариантов.Есть ли что-то, о чем я должен знать / испытывать при выполнении этого, или даже лучше, кто-то делал это раньше, чтобы он мог дать мне результаты?

Ответы [ 3 ]

4 голосов
/ 26 апреля 2011

Обычно вы используете класс Number в отличие от примитивных типов, потому что вам нужно использовать эти значения в коллекциях или других классах, основанных на объектах. Если вы не ограничены этим требованием, вам следует использовать примитивы.

1 голос
/ 26 апреля 2011

Да, при использовании класса Number наблюдается снижение производительности по сравнению с примитивными типами, такими как int, long и т. Д. Особенно, если вы создаете много новых чисел, вам может понадобиться беспокоиться о производительности при сравнении с созданием примитивных типов. Но это не обязательно относится к передаче чисел в методы. Передача экземпляра Number методу не медленнее, чем передача int или long, так как компилятор может в основном передавать «указатель» на область памяти. Это очень общая информация, потому что ваш вопрос очень общий.

0 голосов
/ 26 апреля 2011

Одна вещь, которую вы должны знать, это то, что распределение объектов, вероятно, будет самой большой стоимостью при использовании чисел. Это влияет на ваши тесты, поскольку некоторые операции, использующие автобокс, могут использовать кэшированные значения (которые не создают объекты) и могут дать вам гораздо лучшие результаты производительности. например если вы используете целые числа в диапазоне от -128 до 127, вы получите гораздо лучшие результаты, чем удвоения от -128 до 127, поскольку первый использует значения кэшей, а второй нет.

Короче говоря, если вы проводите микропроцессорный анализ использования чисел, вам необходимо убедиться, что диапазон значений, которые вы используете, является реалистичным, а не все значения равны с точки зрения производительности (конечно, для примитивов это не имеет значения, так что много)

...