Локальная переменная против данных. Огромная потеря в производительности - PullRequest
5 голосов
/ 02 марта 2020

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

export default {

    name: "Map",

    components: { ... },

    data: function () {
        return {
            viewer: {}        
        }
    },

    methods: { ... },

    mounted() {

        // 150-200 FPS; but no access to the viewer object outside of this component.
        let viewer = new Viewer('cesiumContainer');

        // 20-30 FPS; but yields me the access I need for other components to utilize.
        this.viewer = new Viewer('cesiumContainer');

        ... rest of my source code ...
    }

Я могу поддерживать намного более 150-200 FPS со всем содержимым, которое мне нужно отображать, по сравнению с Бедный 20-30 FPS. Я удалил оставшуюся часть исходного кода и просто попытался отрисовать мир Cesium, используя только приведенный выше исходный код, и это все еще происходит, поэтому я считаю, что это root всей моей проблемы. Но я не понимаю, почему this.viewer вызывает такой огромный скачок производительности .... Что я могу сделать, чтобы решить эту проблему?

EDIT # 1:

Вот песочница, включающая Vue и цезий: https://codesandbox.io/s/peaceful-satoshi-1mog9

Используя функцию поиска в правом верхнем углу, go в «Национальный парк Гранд-Каньон, Аризона» и используйте Ctrl и мышь, чтобы повернуть камеру, чтобы увидеть местность. Вы должны получить что-то вроде этого (обратите внимание на низкий FPS и скорость отклика sluggi sh):

Low FPS

Однако, если я делаю то же самое, делая Просмотр локализованной переменной, скорость отклика и FPS намного выше:

High FPS

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