Как написать эффективный код Java? [закрытый]

Это будет работать нормально.

DateTime? strDate = form.dteStartDate;
strDate.Value.ToString("yyyy-MM-dd HH:mm tt");
18
задан Svante 3 June 2009 в 11:23
поделиться

6 ответов

Most optimisation is done by the JVM. There's generally more scope for optimisation at the JIT level than at compile-time. (The "optimise" flag was actually taken out of javac, because it turned out that some "optimisations" actually hurt performance in the real world.)

In general (and this applies to many languages/platforms, not just Java):

  • Write code that is as readable and maintainable as possible.
  • Have performance goals and benchmarks so you can always measure performance
  • Put effort into making your architecture perform; it's hard to change that later (compared with changing implementation)
  • Think about performance more in terms of complexity of algorithms than "make it 10% faster": a change from O(n^2) to O(n) is (generally) much more important. (It very much depends on what the real world usage will be though - if you're only going to be dealing with small values of n, the "theoretically better" algorithm can easily end up being slower due to constant factors.)
  • Use a profiler to determine where your bottlenecks are
  • Only micro-optimise at the cost of readability when the profiler suggests it's worth doing
  • Measure after such an optimisation - you may not have actually had much impact, in which case roll back
32
ответ дан 30 November 2019 в 06:51
поделиться

The Java HotSpot JIT compiler can detect "hotspots" and adaptively modify the executing code so it delivers better perfomance. Read about it here.

On the other hand, if you want to write code which is efficient to begin with, read a book such as "Hardcore Java" by Robert Simmons or "Java Concurrency in Practice" by Brian Goetz.

5
ответ дан 30 November 2019 в 06:51
поделиться

Оптимизирован ли он во время выполнения JVM только или также во время компиляции?

Компиляторы Java обычно выполняют очень небольшую оптимизацию (кроме разрешения составных литералов), поскольку «оптимизированный» байт-код может препятствовать способности JIT-компилятора к оптимизации - и именно здесь это действительно имеет значение.

Или оптимизация JVM эффективна достаточно, чтобы мне просто нужно было написать код, который читается и легко поддерживать независимо от скорости производительности?

Вопрос не в том, чтобы доверять JVM лучше, чем вы оптимизируете (хотя это определенно является фактором), вопрос в том, что оптимизация не имеет никакого значения в 95% случаев, поскольку код не выполняется часто . Если на часть кода приходится 0,1% времени выполнения вашего приложения, просто не стоит беспокоиться о нем. Даже если вы можете ускорить его в 100 раз, это ничего вам не даст. И это наиболее частый случай.

Пока вы избегаете откровенно глупых вещей, вам следует забыть об оптимизации, пока у вас не возникнет конкретная проблема с производительностью, а затем оптимизировать только те части кода, которые профилировщик сообщает вам как горячие точки. в вашем коде.

3
ответ дан 30 November 2019 в 06:51
поделиться

Не беспокойтесь о конкретной оптимизации JVM. Эти детали меняются от версии к версии.

Купите книгу "Эффективная Java" у Джоша Блоха - это лучшая книга по этой теме.

0
ответ дан 30 November 2019 в 06:51
поделиться

I ' http://en.wikipedia.org/wiki/Optimization_ (computer_science) #When_to_optimize

Конечно, измерение и проверка узких мест с помощью инструментов профилирования - это совсем другое дело. Если вы сделаете это и сможете доказать, что есть области, которые нуждаются в оптимизации, а затем сможете измерить выгоды, продолжайте и оптимизируйте.

4
ответ дан 30 November 2019 в 06:51
поделиться

Хотя эти советы предназначены для конкретной реализации Java в Google Android, я полагаю , что эти советы по производительности Google Android применимы также и к «нормальной» JVM. Обратите внимание, что, насколько мне известно, Java в Android не оптимизирует код во время выполнения.

1
ответ дан 30 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: