Насколько я понимаю:
Я бы использовал 33% в качестве индикатора только потому, что профилирование для небольших методов может реально изменить общую производительность.Так что я бы запустил алгоритм на большом наборе данных и посмотрел бы общее время.И я бы рассмотрел эффективность моей оптимизации на основе этих изменений общего времени.Я также включил бы фазу предупреждения, чтобы JIT мог выполнять ее оптимизацию.
На самом деле подсчет битов в любом случае кажется одной из ключевых частей вашего алгоритма ... если вы все оптимизируете, иудается получить в 10 раз быстрее для всех ключевых частей, вы все еще профиль около 33% для этой части.По сути это неплохо.
Вдохновившись по этой ссылке http://bmagic.sourceforge.net/bmsse2opt.html, вы можете попробовать использовать инструкцию SSE, присутствующую во всех процессорах Intel / AMD, если я правильно помню (в противном случае вы могли бы вернуться к JAVA),Интересная часть, касающаяся этой статьи, состоит в том, что в большинстве случаев это связано с памятью.Но я все равно попытался бы выяснить, как это может работать для вас.
Графический процессор идеально подходит для безумно быстрой обработки (всего сто раз ядро процессора) и пропускной способности.Основной проблемой будет передача данных в выделенную память ЦП и получение результата обратно.Но если вы не просто выполняете подсчет битов, а выполняете больше операций, это может принести огромный выигрыш.
В любом случае ярлыка не существует, вы должны попробовать несколько подходов и посмотреть, что принесет наибольшую выгоду.Не считайте%, но общее время потрачено.