我正在尝试制作一个地铁应用程序,找到从车站到车站的最短路径。
我尝试使用几个堆样本的Dijkstra算法来实际计算每次用户选择起始站和结束站时的最佳路径。
但我想知道在Core Data中存储所有可能的路线是否更好,因此应用程序不必每次都计算最佳路线,而是从Core Data获取最佳路线信息
有624个电台。和624 X 624 = 389,376从任何车站到任何车站的现有路径。
每条可能路线的信息都会包含:
- starting station : String
- end station : String
- stations in-between : String
- total time it takes in seconds : Double
- number of transfers : Int
etc.
我的主要问题是:假设我已经拥有389,376个数据,如果我将所有400,00个数据存储在Core Data中,是否需要太多磁盘内存?或者这只是一个微不足道的问题。
我试图避免使用Dijkstra,因为它需要花费大量时间来考虑转移时间,转移偏好等。
答案 0 :(得分:0)
不一定。我在磁盘上有几个1GB到11GB的应用程序。看起来您的使用量将低于1GB。
供参考检查您的iPhone偏好设置 - >一般 - >管理存储以了解其他应用的存储使用情况。
请注意,许多用户可能只有16GB的iPhone。
答案 1 :(得分:0)
如果您确实要存储所有这些数据,我建议您使用SQLite而不是CoreData来正确管理您的兑现数据大小。为此目的有好的包装 https://github.com/ccgus/fmdb
您可以估算数据库的大小
- starting station : String (average size about 20 bytes - one byte per char)
- end station : String (average size about 20 bytes)
- stations in-between : String (average size about 20 bytes)
- total time it takes in seconds : Double (8 bytes)
- number of transfers : Int (4 bytes)
总计:每行72字节* 400 000 = 27,4 Mb