powershell - 大数组中的快速线搜索 - powershell
问题描述
我有一些大约 100k 行的数组(从 csv 文件导出)。磁盘上的文件大小约为 22mb 我只需要找到一些数据行,处理它并加载到 mssql(我需要将 csv 数据与 mssql 同步)
问题是搜索花费了将近 1 秒(~ TotalMilliseconds : 655,0788)!
$csv.Where({$_.'Device UUID' -eq 'lalala'})
有什么办法可以加快速度吗?
解决方案
将所有 100K 行加载到哈希表中,使用Device UUID
属性作为键 - 这将比通过迭代整个数组更快地定位行.Where({...})
:
$deviceTable = @{}
Import-Csv .\path\to\device_list.csv |ForEach-Object {
$deviceTable[$_.'Device UUID'] = $_
}
现在这将花费不到1 秒的时间:
$matchingDevice = $deviceTable['lalala']
推荐阅读
- javascript - 返回一个带有创建它的函数的对象作为方法
- android - 如何将内部存储中的文件复制到flutter(Android)内部存储中的另一个文件夹?
- java - Java中有“逻辑编程”的元素吗?
- java - 以微米为单位的请求范围公共标记
- java - 为什么在启动 BlueJ 时出现 NoClassDefFoundError?
- sql - SQL Oracle 01722 无效数字
- javascript - 如何限制 html 数字输入(允许最小值到最大值和 0)
- flutter - 如何在颤动中删除路由堆栈中间的页面
- django - 如何共享相关名称?
- javascript - 保持嵌套路由处于活动状态