在核心数据中存储400,000个数据,以便寻找不寻常的地铁路线吗?

时间:2015-06-24 13:44:29

标签: ios xcode core-data

我正在尝试制作一个地铁应用程序,找到从车站到车站的最短路径。

我尝试使用几个堆样本的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,因为它需要花费大量时间来考虑转移时间,转移偏好等。

2 个答案:

答案 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