Я создавал два массива для хранения значений x и y для точек, которые я хочу нарисовать. Когда я это делал, я вспомнил о PVectors, о которых я недавно узнал, и вместо этого создал один массив PVectors вместо двух, которые я изначально был. Какой метод более эффективен и приведет к меньшему отставанию браузера при большом наборе значений x и y?Эффективность PVectors по сравнению с двумя отдельными переменными в Processing.js
ответ
Почему бы вам не попробовать оба и выяснить? Создайте массив из 1000 PVectors
и сравните его с созданием массивов с 1000 знаками float
. Увеличьте это до 10 000, или 100 000, или 1 000 000.
Отображает переменную frameRate
на экране в каждом случае. (Не используйте println()
, это слишком медленно - используйте функцию text()
!) Когда вы заметили, что она начала падать?
Может показаться, что я отвечаю на ваш вопрос вопросом, но лучший способ ответить на вопросы о производительности - это просто попробовать его самостоятельно, выполнить некоторые бенчмаркинга и профилирования и решить, что лучше всего в вашем конкретном контексте.
Но я сомневаюсь, что вы заметите огромную разницу в обоих случаях. Вероятно, скорость идентична. Единственное различие, которое вы можете заметить, заключается в том, что использование PVector
, вероятно, будет использовать немного больше памяти. Но опять же, вероятно, этого недостаточно, чтобы действительно волноваться.
Вместо того, чтобы беспокоиться об этой оптимизации (что является преждевременной оптимизацией или микро-оптимизацией), вы должны просто использовать тот подход, который имеет для вас наибольший смысл. Читаемость кода и удобство обслуживания важнее, чем такие мелочи, поэтому используйте только то, что кажется более логичным в вашей программе.
- 1. Эффективность перколятора ElasticSearch по сравнению с запросом
- 2. Эффективность памяти: HashMap по сравнению с массивом
- 3. Эффективность unoldr по сравнению с zipWith
- 4. Эффективность десериализации по сравнению с XmlReader
- 5. Эффективность памяти Java по сравнению с Cython
- 6. Эффективность базы данных MySQL - GROUP BY по сравнению с отдельными таблицами
- 7. Построение остатков по сравнению с остальными переменными
- 8. эффективность кодирования по сравнению эффективности исполнения
- 9. Таблица с большим количеством нулевых значений по сравнению с двумя отдельными таблицами
- 10. Манипулирование переменными в Processing.js извне элемента холста
- 11. Эффективность памяти по сравнению с уменьшением/введением в Ruby
- 12. Почему std :: async медленнее по сравнению с простыми отдельными потоками?
- 13. Производительность синхронизации CUDA __threadfence() по сравнению с синхронизацией двумя отдельными вызовами ядра
- 14. Какова производительность подзапросов по сравнению с двумя отдельными запросами на выбор?
- 15. Рассчитать процент с двумя переменными
- 16. Boolean по сравнению с двумя строками
- 17. По сравнению с двумя возможными значениями
- 18. Раскадровка с двумя отдельными потоками
- 19. Knockout.js Связывание данных с отдельными переменными
- 20. Эффективность. Возвращаемые значения функции по сравнению с выходными параметрами
- 21. Эффективность запуска Oracle по сравнению с запланированными заданиями
- 22. Woocommerce - перезаписать глобальные вариации с отдельными переменными
- 23. Эффективность структуры базы данных Firebase по сравнению с плоскостностью
- 24. Эффективность Java Class.cast() по сравнению с обычным литом?
- 25. Эффективность анимированных текстур Webgl по сравнению с холстом drawImage performance
- 26. Эффективность 2 векторов по сравнению с вектором структур
- 27. Эффективность памяти трех свойств по сравнению с одним NSDictionary
- 28. Введенный скрипт в расширении сафари по сравнению с глобальными переменными
- 29. Dotplot с двумя категориальными переменными и двумя количественными переменными
- 30. iPhone - контекстные параметры по сравнению с глобальными переменными
Я следил за вашим советом и создал такую программу. Я обнаружил, что если бы я не ограничивал количество значений x и y, то через три минуты частота кадров в обоих случаях снизилась с 60 до менее тридцати. После трех минут массив PVector был примерно на три кадра быстрее. Здесь все становится интересным. При заданном пределе 200 ни один из методов не дрогнул или не отставал и оставался более или менее со скоростью 60 кадров в секунду. Однако, когда я наложил ограничение в 2000, массив PVector перетащил частоту кадров до 40 кадров в секунду через три минуты, в то время как 2 массива не дрогнули и остались на 60. –
В любом случае, спасибо! –
@EmmaCooper Мне было бы интересно увидеть ваш код. Почему ваше отставание ухудшается с течением времени? –