与//Parameters class
public Class Parameters
{
public List<string> A {get; set;}
public List<int> B {get; set;}
}
//some function in a controller
public List<SomeResult> GetResult(Parameters pars)
{
var db = new DbContext();
var result = db.SomeResult.Where(s => s.Any(p =>p.SomeString == pars.A
|| p.SomeInt == pars.B))
.ToList();
return result;
}
进行转换而不是转换为某些基本结构的性能是否存在差异?这部分是为了实现半动态打字系统。
这是我的代码:
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;
}
或基类型结构之间是否有任何性能差异?
答案 0 :(得分:3)
与void *之间的转换性能是否存在差异,而不是转换为某些基本结构?
我们假设:
您的目标平台是一些常见的处理器,如x86,x86-64,ARM,Aarch,PowerPC(32位或64位)
您使用的是优秀的优化编译器(如GCC或Clang/LLVM)
您已启用了一些优化(因此您至少使用-O1
或-O2
进行编译)
然后指针在内部表示为地址,您的性能不应该有任何差别。研究生成的汇编代码(用gcc -O1 -S -fverbose-asm
....)来确定。
但是,你可以考虑使用一些union
(指针,或更好的指针union
struct
。)