Что основные навыки должны быть консультантом по производительности? [закрытый]

Стиль Prgramming не ограничивает только для кодирования identation и комментария.
Код identation действительно очень важен для кода lizibility. Я никогда не видел код нес отступом, который было легко считать:).
то, Что также очень важно, является кодом, чтобы быть очевидным, комментарии должны использоваться только, когда реализация становится по различным таинственным причинам или где код не отражает ясно, ПОЧЕМУ автор записал ему тот путь. Я видел, что партии сверхпрокомментировали код, и я могу сказать Вам, видя, что комментарии почти о каждой строке похожи на читающие страницы оскорблений.
Так или иначе, я сомневаюсь, что Microsoft отклонила Вашего коллегу просто, потому что он не прокомментировал двойную реализацию связанного списка.

6
задан Peter Mortensen 21 August 2012 в 19:10
поделиться

9 ответов

Я думаю, что в зависимости от конкретного клиента и конкретной проблемы вам потребуется отличные навыки алгоритмического анализа и оптимизации. Находится ли ваша проблема на математико-алгоритмическом уровне или на уровне Java-алгоритма?

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

2
ответ дан 8 December 2019 в 17:23
поделиться

Я думаю, что наиболее важным навыком является аналитический ум, способный следовать свидетельствам, а не «интуиции», и действительно ломать и измерять проблемы.

После этого потребуется некоторые творческие способы понимания измерения. Когда кто-то нанимает консультанта по производительности, он часто застревает, что, скорее всего, означает, что у них есть реальные пользователи, которые делают реальные вещи, а это означает, что Java не будет единственным элементом в стеке (как вы отметили базы данных, но могут быть проблемы с JavaScript и сетью. и кто знает что еще).

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

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

4
ответ дан 8 December 2019 в 17:23
поделиться

Кроме того, здесь есть подполе, которое касается повышения производительности графического интерфейса пользователя (многие высокоскоростные приложения, такие как финансы, написаны на таких вещах, как Swing). Это приносит целый ряд дополнительных навыков.

1
ответ дан 8 December 2019 в 17:23
поделиться

Хорошее понимание алгоритмов и нотации Big O. Если вы потратите 10 часов на оптимизацию алгоритма O (n), когда существует O (logn), вы зря тратите время. Я бы добавил BigO в ваш список.

Также хорошее понимание взаимосвязи между памятью и процессором. Часто вы можете обменять одно на другое (например, кэширование).

1
ответ дан 8 December 2019 в 17:23
поделиться

То, что сказали другие, плюс это . Он идет вместе с this и this и this .

Добавлено: понимание Big-O, JVM, кеширования, поведения баз данных очень важно. Однако, когда дело доходит до определения проблемы , вы часто можете легко и быстро найти ее с помощью очень простой процедуры, не требующей каких-либо специальных инструментов. Он включает в себя несколько случайных стекшотов и тщательный просмотр каждого из них, а не обобщение.

Это опровергает многие общепринятые представления о профилировании, в чем вы легко можете убедиться сами. Ссылки выше объясняют это подробно.

1
ответ дан 8 December 2019 в 17:23
поделиться

Возможность ускорить код Java. Скорее всего, вас попросят посмотреть медленный код, и вам нужно будет найти и исправить медленные участки. Не можешь ускорить, и у тебя будут злые клиенты, ускорите это, и все будут счастливы. Это может поставить вас под определенное давление, если вам нравятся подобные вещи.

Вас могут вызвать, чтобы дать совет по дизайну. В результате вам необходимо знать множество передовых методов и обладать хорошими дизайнерскими навыками.

1
ответ дан 8 December 2019 в 17:23
поделиться

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

Как консультанту по такого рода вещам вам понадобятся серьезные люди / политические навыки . Вы будете проводить собеседование и собирать данные у людей, которые уже пытались решить проблему с производительностью, но не смогли. Многие из них будут недовольны вызовом консультанта. Вам придется столкнуться с их сопротивлением. ЕСЛИ вы собираетесь заниматься этим как собственным бизнесом, вам также потребуются хорошие бухгалтерские знания (и налоговый консультант) и навыки продаж. Вам понадобятся разговорные навыки, чтобы представить свои услуги потенциальным клиентам.

Убедитесь, что вы не только измерили, но и задокументировали то, что было опробовано, и разницу во времени. Храните свои собственные записи о таких вещах в базе данных, и довольно скоро у вас будет способ увидеть наиболее вероятные настройки производительности, которые можно попробовать, на основе достоверных данных для многих клиентов. Разработка программы базы знаний очень поможет вам с течением времени.

Я бы также вложил средства в набор книг по настройке производительности базы данных (по крайней мере, по одной для каждой из основных баз данных, поскольку настройка очень зависит от базы данных) и базы данных дизайн. Я думаю, вы сможете отследить многие-многие проблемы с производительностью до плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

Храните свои собственные записи о таких вещах в базе данных, и довольно скоро у вас будет способ увидеть наиболее вероятные настройки производительности, которые можно попробовать, на основе достоверных данных для многих клиентов. Разработка программы базы знаний очень поможет вам с течением времени.

Я бы также вложил средства в набор книг по настройке производительности базы данных (по крайней мере, по одной для каждой из основных баз данных, поскольку настройка очень зависит от базы данных) и базы данных дизайн. Я думаю, вы сможете отследить многие-многие проблемы с производительностью до плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

Храните свои собственные записи о таких вещах в базе данных, и довольно скоро у вас будет способ увидеть наиболее вероятные настройки производительности, которые можно попробовать, на основе достоверных данных для многих клиентов. Разработка программы базы знаний очень поможет вам с течением времени.

Я бы также вложил средства в набор книг по настройке производительности базы данных (по крайней мере, по одной для каждой из основных баз данных, поскольку настройка очень зависит от базы данных) и базы данных дизайн. Я думаю, вы сможете отследить многие-многие проблемы с производительностью до плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

Разработка программы базы знаний очень поможет вам с течением времени.

Я бы также инвестировал в набор книг по настройке производительности базы данных (по крайней мере, по одной для каждого из основных серверных модулей базы данных, поскольку настройка очень зависит от базы данных) и базы данных дизайн. Я думаю, вы сможете отследить многие-многие проблемы с производительностью до плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

Разработка программы базы знаний очень поможет вам с течением времени.

Я бы также вложил средства в набор книг по настройке производительности базы данных (по крайней мере, по одной для каждой из основных баз данных, поскольку настройка очень зависит от базы данных) и базы данных дизайн. Я думаю, вы сможете отследить многие-многие проблемы с производительностью до плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

много проблем с производительностью из-за плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

много проблем с производительностью из-за плохого дизайна базы данных и отсутствия знаний о том, как написать хороший код SQL, который будет хорошо работать. Настройка производительности базы данных намного сложнее, чем знание того, какие индексы создавать.

2
ответ дан 8 December 2019 в 17:23
поделиться

Некоторые общие требования к навыкам можно найти в Искусство тестирования производительности приложений . Навыки, которые я нашел полезными, следующие:

  • Статистика - тесты производительности никогда не возвращают одно и то же время дважды. Вам нужно выяснить, какова погрешность, чтобы увидеть, являются ли изменения статистически значимыми.
  • Навыки бизнес-аналитика - вам нужно видеть, что делают конечные пользователи, какие части они считают медленными, а затем наращивать тестовые примеры вокруг этих событий. В конце ваших улучшений производительности пользователи смогут заметить разницу, и результаты ваших тестов должны количественно оценить это.
  • универсальный технический специалист - Проблемы с производительностью могут возникнуть где угодно. Чтобы изолировать проблему, вам необходимо разбираться в каждой технологии в стеке. Проблемы с производительностью могут быть вызваны задержкой, сетями, базой данных и кодом. Вы можете обнаружить, что у разработчиков есть 4 ГБ ОЗУ на своих коробках, а у людей, занимающихся вводом данных, которые используют код, есть машина на 512 МБ.

Преимущество работы консультантом в том, что вы можете иметь сквозное представление. Разработчики, вероятно, знают области своего кода, которые работают медленно, но это может не иметь большого значения для общего времени обработки. Да, этот ArrayList # содержит вызовы, выполняемые за время O (n), но на современном оборудовании это может занять всего несколько мс.

Преимущество работы консультантом в том, что вы можете видеть все от начала до конца. Разработчики, вероятно, знают области своего кода, которые работают медленно, но это может не иметь большого значения для общего времени обработки. Да, этот ArrayList # содержит вызовы, выполняемые за время O (n), но на современном оборудовании это может занять всего несколько мс.

Преимущество работы консультантом в том, что вы можете видеть все от начала до конца. Разработчики, вероятно, знают области своего кода, которые работают медленно, но это может не иметь большого значения для общего времени обработки. Да, этот ArrayList # содержит вызовы, выполняемые за время O (n), но на современном оборудовании это может занять всего несколько мс.

1
ответ дан 8 December 2019 в 17:23
поделиться

Я бы добавил:

  • Относитесь скептически даже к результатам профилировщика: сначала используйте свой мозг.
  • Не верьте, пока не увидите.
  • Не обвиняйте перед измерением.
1
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

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