我有一个数据的四列的非常大的CSV文件(100万+行)time,id,x和y。这是一个示例:t id x y434 84 0 0435 84 28.22 -4.5435 611 1895.13 755.17435 872 2401.08 159.12435 65 0 226.39436 84 50.44 -4.5436 611 1890.63 732.5436 872 2373.9 151.04436 990 2614.97 372.74...在我的模拟中,随着时间的推移,我需要做三件事之一:如果这是第一次出现id,则在 x,y 坐标处创建一个具有该 id 的对象如果具有 id 的对象已存在,则更新该对象的 x,y 坐标如果 id 不再出现,则删除该对象我猜保持一个正在运行的计时器,每秒检查一次 CSV,用当前时间定位所有行并执行上述步骤之一是非常密集的。是否有更有效的方法来处理 Unity 模拟中的时间序列数据?
1 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
对于这么大的文件,您应该开始寻找替代方案。这里有一些想法,但最佳选择取决于您具体在做什么。
更新此 CSV 的组件可以直接与 Unity3d 通信吗?使用例如套接字连接将避免需要不断地在磁盘中保存和读取此信息。但是,这取决于如何创建此 CSV 数据,显然
你能把csv分成更小的文件吗?例如,每个时间戳一个?这样,每一步更新模拟的开销就会减少。
你能减少更新的频率吗?是否必须每秒更新一次?
或者,您是否只能每隔 10 秒读取一次 CSV,然后加载接下来 10 秒的所有数据(例如,该范围内的所有时间戳),将它们存储在内存中,然后仅在接下来的 10 秒内读取使用内存中的信息来更新而不是再次读取文件?这将减少您对磁盘的调用。
- 1 回答
- 0 关注
- 352 浏览
添加回答
举报
0/150
提交
取消