2
我有一个程序,从需要转换为Go的内存映射读取173(c)数据结构。类型的值在这些结构中作为字符串存储。该结构每秒接收60次。解决反射开销的最佳方法是什么?
我现在使用反射(FieldByName
)来获取对结构字段的引用并设置接收到的数据。但是因为有很多领域(173),并且他们得到了很多更新,所以这些广告开销很大,而且函数调用是我的程序中最慢的部分(jay go prof
!)。
使这个更快的最佳方法是什么?至于我可以看到我有三个选项:
- 缓存
reflect.Value
的地图中,并接收数据的功能,使用模板结构依赖于缓存地图,填补结构和返回副本该模板结构 go generate
所有的setter和一个巨大的switch语句为每个接收现场- 只是所有代码的不同制定者的
什么是“最好”的选择?有没有我忽略的选项?