2017-03-16 24 views
3

假設我有一堆我想公開給Qml的C++對象。性能:導入包或單獨對象更好嗎?

我能想象這樣的雙向:

第1種方法,一個import語句爲每個對象

qmlRegisterType<Object1>("my.package.object1", 1, 0, "Object1"); 
qmlRegisterType<Object2>("my.package.object2", 1, 0, "Object2"); 
qmlRegisterType<Object3>("my.package.object3", 1, 0, "Object3"); 
qmlRegisterType<Object4>("my.package.object4", 1, 0, "Object4"); 
... 

然後在設爲Qml我們導入什麼,我需要在每個組件

import my.package.object2 1.0 
import my.package.object3 1.0 

Object2 { Object3 { } } 

第二種方法所有對象的一個​​導入語句:

qmlRegisterType<Object1>("my.package", 1, 0, "Object1"); 
qmlRegisterType<Object2>("my.package", 1, 0, "Object2"); 
qmlRegisterType<Object3>("my.package", 1, 0, "Object3"); 
qmlRegisterType<Object4>("my.package", 1, 0, "Object4"); 
... 

然後在設爲Qml我們進口的所有對象在任何需要它們中的至少一個

import my.package 1.0 

Object3 { 
    Object2 { ... } 
    Object1 { ... } 
} 

顯然,這是比較簡單的組成(只要有意義)到組對象中封裝。性能不應該成爲你的主要關注點。

在性能方面比其他方式更好?

+0

我不認爲性能是決定如何組織模塊時的首要考慮因素。 – dtech

+0

當然不是,它只是更好地理解引擎。 – BlueMagma

回答

2

我不是100%確定的,但我會說QML引擎在找到導入語句時會檢查模塊,所以如果您將所有類放在同一個模塊中,它們將在同一時間全部找到,但如果單獨他們需要幾個模塊檢查。

所以,真正的答案是:

  1. ,如果你使用的是最你的應用程序的對象,將它們放在同一個模塊中,使一個單一模塊檢查你有所有的人(你有對於你不使用的對象來說開銷很小,但是你正在節省新模塊內省的開銷)。

  2. 如果你使用一些項目,將它們分開,讓「新模塊的開銷」和「模塊中未使用的對象」之間的比例較小

免責聲明:無論如何,我們不」 t知道「新模塊檢查」開銷的基準,既不是「模塊中未使用的對象」開銷。

相關問題