我有一个包含许多矢量,集合和地图的项目.在大多数情况下,键/索引是整数.我正在考虑创建小类,如:
class PhoneRepoIx //index into map {phone_number => pointer}
{
public:
int n;
};
class PersonIx //index into map {social_security_number => pointer}
{
public:
int n;
};
Run Code Online (Sandbox Code Playgroud)
我会受到任何速度或记忆惩罚吗?有了内存,我90%确定每个实例没有内存成本,只有每个类型.速度我不清楚.
动机: 通过上述方法,编译器会为我做一些额外的类型检查.此外,通过精心选择的显式类型名称,我的代码的读者将更容易看到我在做什么.到目前为止,我到处使用int,我选择了变量名来表达每个索引.有了上面的内容,我的变量名称可能更短.
注意:Tyepdefs没有完全解决我的问题,因为编译器不会进行任何额外的类型检查,内部所有类型都只是int.
我有一个python脚本调用基于USB的数据采集C#dotnet可执行文件.主要的python脚本做了许多其他的事情,例如它控制步进电机.我们想检查各种操作的相对时间,为此目的,dotnet exe生成一个带有来自C#Stopwatch.GetTimestamp()的时间戳的日志,据我所知,它产生与调用win32 API QueryPerformanceCounter()相同的数字.
现在我想从python脚本中获得类似的数字.time.clock()返回这样的值,不幸的是它将第一次调用时获得的值减去time.clock().我怎么能绕过这个?从一些现有的python模块调用QueryPerformanceCounter()是否容易,或者我是否必须在C中编写自己的python扩展?
我忘了提及,Tim Golden的python WMI模块做到了这一点:wmi.WMI().Win32_PerfRawData_PerfOS_System()[0] .Timestamp_PerfTime,但它太慢了,开销大约48ms.我需要一些<= 1ms的开销.time.clock()似乎足够快,就像c#Stopwatch.GetTimestamp()一样.
TIA,Radim
一个天真的问题:与大多数开发人员一样,我定期需要将数据保存到磁盘。几个、几个 10 个或几个 100 个值。大多数人使用 XML,有些人使用 JSON,但我总觉得旧的 ini 文件格式很好
键1=值1
键2=值2
最能满足我的需求。这些文件非常可读,可以轻松地对其进行文本处理,版本控制中的差异工作得很好。
然而,key=value 在序列化中似乎并不是很流行。我是否忽略了什么?