Что такое оптимизация кода?

В вашем коде я предполагаю, что поле «creationTime» - это дата, конвертированная в секунды, поэтому я основал свою реализацию на этом. Вот быстрый код для обновления меток времени с учетом требования:

from datetime import datetime, timedelta

data = [{"creationTime": 1543647600000,"id":1},
{"creationTime": 1543647600000,"id":2},
{"creationTime": 1543647600000,"id":3}]

day_start = 9
for tuple in data:
    print('Previous: ' , tuple['creationTime'])
    tuple['creationTime'] -=  int(timedelta(days = day_start).total_seconds())
    day_start -= 2
    print('After: ', tuple['creationTime'])

Это то, что я понял из вопроса, если что-то не так, как вы хотели, пожалуйста, прокомментируйте, и я постараюсь смотреть.

7
задан mmcdole 12 February 2009 в 07:58
поделиться

7 ответов

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

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

И помните:

Первое Правило Оптимизации Программы: не делайте этого. Второе Правило Оптимизации Программы (для экспертов только!): еще не делайте этого. (Michael A. Jackson)

15
ответ дан 6 December 2019 в 07:08
поделиться

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

В Вашем случае относится главным образом к 2 уровням:

Уровень дизайна

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

Уровень исходного кода

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

5
ответ дан 6 December 2019 в 07:08
поделиться

Оптимизация кода делает код выполненным быстрее. Существует два основных способа сделать это:

1) Сжатие большего количества работы в меньшее количество циклов. Фигура, где код делает дополнительную копию или если существует ответвление в жестком цикле. Это оптимизирует в маленьком.

2) То, чтобы заставлять Ваши алгоритмы масштабироваться лучше. Вы, возможно, услышали о "Большом O" нотацию. Это заставляет алгоритм ухудшиться намного менее быстро с большими наборами данных.

Например, при наивном поиске телефонной книги имя, Вы запустите на странице 1 и считаете все имена, пока Вы не найдете тот, который Вы ищете. Это возьмет много инструкций, масштабируемых количеством имен в телефонной книге. Мы называем этот O (n). Теперь думайте о том, как Вы действительно ищете телефонную книгу. Вы открываетесь к некоторому месту к середине и видите, которые примыкают имя, которое Вы ищете, идет. Это называют двоичным поиском и масштабами в логарифме количества имен. Мы называем этот O (logn). Это намного быстрее.

Помните первое правило оптимизации: Мера сначала. Много лет человека были проведены, оптимизируя код, который не был выполнен очень.

3
ответ дан 6 December 2019 в 07:08
поделиться

При выполнении оптимизации кода Вы берете метрику на своем коде и пытаетесь сделать это более эффективным. Метрика обычно относится к дефицитному ресурсу.

Вот общие метрики

  • Скорость выполнения (обычно первое, которое приходит на ум при высказывании оптимизации),
  • Потребление памяти
  • Исполняемый размер (во встроенных системах это может быть важно),
  • Доступ к базе данных
  • Удаленный сервисный доступ (Делают это менее болтливым, кэшируясь..)
  • Простота, удобочитаемость, пригодность для обслуживания кода

После оптимизации код должен дать тот же результат.

Проблема состоит в том, что необходимо сделать выбор. Скорость выполнения часто идет с большей памятью consuption...

Вы должны также alwas рассматривать оптимизацию глобально. Наличие усиления 10 мс в цикле, когда Вы затем тратите 1 000 мс, ожидающих веб-сервиса, полностью бесполезно.

3
ответ дан 6 December 2019 в 07:08
поделиться

Оптимизация имеет две основных цели:

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

  • получение программного обеспечения быть более удобным в сопровождении, путем рефакторинга его.

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

1
ответ дан 6 December 2019 в 07:08
поделиться

Для добавления к ответу Anton Gogolev, когда части кода нужна оптимизация, это - потому что конкретное требование к производительности не встречено. Мы разрабатываем программы для соответствия пользовательским требованиям, правильно? Большинство программистов склонно думать в основном с точки зрения функциональных требований, т.е. что делает программа, но у пользователей также будут требования к производительности, что является стоимостью ресурса (сетевая пропускная способность, циклы ЦП, память, дисковое пространство, и т.д....) обеспечения функциональности. Оптимизация является процессом изменения части кода для соответствия требованию реального исполнения. По моему скромному мнению, это должно произойти во время проектирования, но Вы будете иногда писать часть кода только, чтобы обнаружить, что он показывает низкие результаты. Для оптимизации кода сначала необходимо узнать, который является ресурсом, что Вы по использованию. Если это - циклы ЦП или память, профилировщик мог бы помочь. Если это будет сетевая пропускная способность, которая является очень общей в эти дни, то необходимо будет сделать некоторое тестирование загрузки и профилирование comms.

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

1
ответ дан 6 December 2019 в 07:08
поделиться

Это могло бы быть, например, что код имеет блок кода, который дублирован и мог быть помещен в метод, Вы могли бы использовать удержанные от использования методы/классы, могли бы быть более простые способы сделать то, что делает код, могла бы быть некоторая чистка, чтобы сделать (например, удалить трудно кодирование) и т.д...

-3
ответ дан 6 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

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