2017-03-16 1 views
3

私はQmlに公開したいC++オブジェクトがたくさんあるとしましょう。パフォーマンス:パッケージ内または個別にオブジェクトをインポートする方が良いですか?

私はそうすることの双方向想像することができます:

第一の方法、各オブジェクト

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"); 
... 

ための一つのimport文をそして、QMLで、私たちは、私は、各コンポーネント

に必要なものをインポートします
import my.package.object2 1.0 
import my.package.object3 1.0 

Object2 { Object3 { } } 

第2のメソッドすべてのオブジェクトに対して1つのインポートステートメント:

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 { ... } 
} 

は明らかに、それは簡単ですそれらの少なくとも1つを必要とするすべてのコンポーネントのすべてのオブジェクトをインポートします。そして、あなたの主な関心事であるべきではありません。

パフォーマンス面では、他の方法よりも優れていますか?

+0

モジュールをどのように編成するかを決める際にパフォーマンスが重視されるとは思いません。 – dtech

+0

もちろん、それはエンジンをよりよく理解することだけです。 – BlueMagma

答えて

2

私は100%確信していませんが、QMLエンジンはインポートステートメントを検出するとモジュールを検査すると言います。したがって、すべてのクラスを同じモジュールに入れると、それらはすべて同時に見つかりますが、複数のモジュール検査が必要になります。

だから、本当の答えは次のとおりです。

  1. アプリであなたのオブジェクトのほとんどを使用している場合、1回のモジュール検査で、あなたが持っているそれらのすべてを(持っているように、同じモジュールに入れてあなたが使用していないオブジェクトのための小さなオーバーヘッドが、新しいモジュールイントロスペクションのオーバーヘッドを節約しています)。

  2. あなたは「新しいモジュールオーバーヘッド」と「モジュールで使用されていないオブジェクト」との比は免責

小さくなるようにそれらを分離、いくつかの項目を使用している場合:とにかく、私たちは「ドン"新しいモジュール検査"オーバーヘッドのベンチマーク、 "モジュール内の未使用オブジェクト"のオーバーヘッドは知りません。

関連する問題