構造体全体を packed として宣言する場合のパフォーマンスの低下

__packed で修飾された構造体全体の読み出しと書き込みを行うには、非境界整列型アクセスが必要であるため、パフォーマンスが低下する可能性があります。

パックされた struct を最適化する場合、コンパイラは、各フィールドの境界整列を推測して、アクセス効率の向上を図ります。ただし、コンパイラが __packed struct 内の各フィールドの境界整列をいつも推測できるとは限りません。一方、struct 内の個々のフィールドが __packed として宣言されている場合は、struct 内の自然境界整列型メンバへの高速アクセスが保証されています。そのため、パック構造体の使用が必要な場合は、構造体自体をパックするのではなく、必ず構造体の個々のフィールドをパックして下さい。

Note

struct の個々の非境界整列フィールドを __packed として宣言すると、struct のどのフィールドが非境界整列型であるかをプログラマに明示できるというメリットもあります。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711