いくつかの基本構造体にキャストするのではなく、void *
とのキャストのパフォーマンスに違いはありますか?これは、部分的に半動的型入力システムを達成することにある。ここでvoid *へのキャストと基本構造体ポインタとの間にパフォーマンスの違いはありますか?
が私のコードです:
#include "stdlib.h"
typedef struct
{
unsigned char type;
} Dyn;
typedef struct
{
unsigned char type;
int number;
} Num;
typedef struct
{
unsigned char type;
char letter;
} Lett;
int main(void) {
Num* n = (Num *)malloc(sizeof(Num));
void* hold = n; // to void * casting
Num* n_g = (Num *)hold;
Dyn* dhold = (Dyn *)n; // to base struct casting
Num* n_d = (Num *)dhold;
return 0;
}
ので、構造体へのポインタの観点から、void *
または基本型の構造体を使用しての間で任意のパフォーマンスの違いはありますか?
パフォーマンスの考慮事項をお勧めします、プラットフォームおよび設定を変更するには、詳細を含める必要があります。そして、おそらくあなたは異なるメソッド間で生成されたアセンブリを比較することによってあなたの質問に答えることができました –
ああ、これはgccのだろうが、私はあなたの言うことを参照してください。 –
私はM.Mに同意します。キャストに関するパフォーマンスについては、オペレーティングシステムと素材を提供する必要があります。ほとんどの場合、この操作は無料です。ところで、この種の機能をビルドするために 'void * 'を使うのは、C言語のパターンではありません。 – Stargateur