2016-07-18 3 views
1

Я создавал два массива для хранения значений x и y для точек, которые я хочу нарисовать. Когда я это делал, я вспомнил о PVectors, о которых я недавно узнал, и вместо этого создал один массив PVectors вместо двух, которые я изначально был. Какой метод более эффективен и приведет к меньшему отставанию браузера при большом наборе значений x и y?Эффективность PVectors по сравнению с двумя отдельными переменными в Processing.js

ответ

1

Почему бы вам не попробовать оба и выяснить? Создайте массив из 1000 PVectors и сравните его с созданием массивов с 1000 знаками float. Увеличьте это до 10 000, или 100 000, или 1 000 000.

Отображает переменную frameRate на экране в каждом случае. (Не используйте println(), это слишком медленно - используйте функцию text()!) Когда вы заметили, что она начала падать?

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

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

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

+0

Я следил за вашим советом и создал такую ​​программу. Я обнаружил, что если бы я не ограничивал количество значений x и y, то через три минуты частота кадров в обоих случаях снизилась с 60 до менее тридцати. После трех минут массив PVector был примерно на три кадра быстрее. Здесь все становится интересным. При заданном пределе 200 ни один из методов не дрогнул или не отставал и оставался более или менее со скоростью 60 кадров в секунду. Однако, когда я наложил ограничение в 2000, массив PVector перетащил частоту кадров до 40 кадров в секунду через три минуты, в то время как 2 массива не дрогнули и остались на 60. –

+0

В любом случае, спасибо! –

+0

@EmmaCooper Мне было бы интересно увидеть ваш код. Почему ваше отставание ухудшается с течением времени? –

Смежные вопросы