swift - 你应该使用外部文件来存储大数据吗?
问题描述
我正在制作一个使用许多预定义大文本的应用程序。目前,我将它们存储在一个 RTF 文件中并从那里加载它们以将代码与内容分开。如果 rtf 文件大约有 1500-2000 行,并且在应用程序启动时被加载和拆分多次,应用程序是否需要很长时间才能加载,我应该在源代码中定义内容吗?
谢谢你的帮助!
解决方案
我绝对不会倾向于在源代码本身中放入 2000 多行文本。单独的文件(或数据库或其他)更有意义。
关于应用程序是否需要很长时间来加载它,您应该简单地对其进行基准测试(例如let start = CFAbsoluteTimeGetCurrent()
,在加载之前和let elapsed = CFAbsoluteTimeGetCurrent() - start
之后放置,看看需要多长时间。
顺便说一句,如果是 iOS,请确保您在实际设备上执行此操作,而不是在模拟器上获取准确的时间。但是通常加载这样的小文件对于所需的时间是无关紧要的(例如,它可能仍然会比许多图像小)。
我刚刚测试了加载一个标记相当多的 rtf(每个单词都有不同的颜色),它是 250kb。使用NSAttributedString
带有文件 URL 的初始化程序,虽然它比纯文本文件(相同文本,无标记)慢一个数量级,但在我的 iPhone 上仍然只用了 70 毫秒。但显然,您应该对自己的文件进行基准测试。
推荐阅读
- python - 需要使用 xpath 和 beautifulsoup 从网站上抓取数据
- python - 为 Twisted 运行 setup.py install ... 错误 ModuleNotFoundError: No module named 'twisted'
- kubernetes - 应该保留哪些目录以从在 K8s 环境中运行的 ActiveMQ Artemis 集群中的失败节点重新创建活动节点(pod)?
- node.js - 如何在继续之前等待计划的作业终止?
- javascript - vue js应用程序中的未知边距
- python - 如果时间戳已关闭,则删除重复项
- angular - 角度反应形式模式验证器只允许文本、数字和一些字符
- java - 随机整数作为 hashCode
- google-apps-script - 时间戳功能改变,如何解决这个问题?
- mysql - 在 SQL 咨询中返回多列