用对象获取列表反集,速度飞快

本文转自 http://ahkscript.org/boards/viewtopic.php?f=29&t=6589

昨天我碰到一个问题,要从 10 万个数字中获取 6 万左右数字的反集。我刚开始用的方法是用 InStr() 搜索 10 万次,结果是非常慢,大概要 40 秒钟。
本以为没其他方法了。不过还是带着试一试的态度,在英文板块发了个求助帖,别人回复说用对象。一测试竟然 0 秒就完成了!这个方法太有用了,特意在这里发个帖子让更多人知道 :D
测试代码:

SetBatchLines -1

; 生成 10 万个数字
    Loop, 100000
        fullList .= "," A_Index
    fullList := Trim(fullList, ",")

; 生成 6 万个数字
    Loop, 60000
        subList .= "," A_Index
    subList  := Trim(subList, ",")

; 获取 4 万个反集数字

    ; 方法一: InStr()
        TickCount_Start := A_TickCount ; 计时开始

        resultList := ""
        Loop, Parse, fullList, CSV
            If !InStr(subList, A_LoopField)
                resultList .= "," A_LoopField

        MsgBox, % "耗时: " (A_TickCount-TickCount_Start)/1000 " 秒" ; 我这里显示“耗时: 38.516000 秒”

    ; 方法二: Object
        TickCount_Start := A_TickCount ; 计时开始

        ; 把 6 万个数字列表转为对象
        oSubList := {}
        Loop, Parse, subList, CSV
            oSubList[A_LoopField] := 1

        ; 开始...
        resultList := ""
        Loop, Parse, fullList, CSV
            If !oSubList[A_LoopField]
                resultList .= "," A_LoopField

        MsgBox, % "耗时: " (A_TickCount-TickCount_Start)/1000 " 秒" ; 我这里显示“耗时: 0.125000 秒”
时间: 2024-10-09 08:15:09

用对象获取列表反集,速度飞快的相关文章

获取列表中某一个文件夹下的列表项集合(不包含子文件夹对象,也不包含子文件夹中的列表项)

RT,方法如下: 1 SPListItemCollection GetSubItemsWithoutFoldersInParrentFolder(SPFolder parrent) 2 { 3 SPList list = parrent.Item.ParentList; 4 SPQuery query = new SPQuery(); 5 query.Folder = parrent; 6 query.Query = "<Where><Eq><FieldRef Na

Dom对象和jQuery包装集

Dom对象 在传统的JavaScript开发中,我们经常都是首先获取Dom对象,比如: document.getElementById("dv1"); 我们经常使用getElementById方法来获取Dom对象.在事件触发函数中,我们还可以通过this来获取引用事件触发对象.或者,我们也可以通过event.target或event.srcElement来获取引发事件的Dom对象. 注意,此处,我们获得的都是Dom对象. jQuery包装集 jQuery包装集可以说是Dom对象的扩充.

通过window.navigator对象获取地理位置信息并在百度地图上显示

通过window.navigator对象获取地理位置信息 Geolocation API:用户可共享地理位置,并在Web应用的协助下享用位置感知服务(location-aware services) window.navigator下的geolocation 对象的 getCurrentPosition 方法可以获取当前位置.getCurrentPosition 方法将发起对位置信息的异步请求并将立即返回.如果该请求成功完成,则调用用来实现位置数据接收的成功回调. 下面演示如何调用 getCur

原生 JS 中对象相关 API 合集

https://juejin.im/entry/58f8a705a0bb9f0065a4cb20 原文链接:https://microzz.com/2017/04/20/jsobject/ 原生 JavaScript 中对象相关 API 合集 - 对象篇.现在 jQuery 已经没有那么有优势了,原生 JS 赶紧学起来... -- 由microzz分享 Microzz [email protected] 主页 文章 标签 GitHub 关于我 掘金专栏 SegmentFault Vue音乐播放器

jQuery(0)——Dom对象和jQuery包装集

Dom对象和jQuery包装集 开始学习jQuery,没想到还要知道这个概念. Dom对象 DOM(Document Object Model)文档对象模型 在w3c中是这样说明它的: 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML. JavaScript 能够改变页面中的所有 HTML 元素 Java

tcl脚本学习十三:列表命令集

lesson 13 : 列表命令集 list arg1 arg2 ... 创建一个列表lindex list index 返回列表 list 中的第 index 个元素(element)值llength list 计算列表 list 元素个数 example ① : 创建一个List ,List的用法 1. set l1 [list Sun Mon Tues] =>Sun Mon Tues ;#列表 l1 含有三个元素 2. set l2 [list $l1 Wed] => {Sun Mon

selenium+java:获取列表中的值

selenium+java:获取列表中的值 (2011-08-23 17:14:48) 标签: 杂谈 分类: selenium 初步研究利用java+testNg框架下写selenium测试用例,今天学会了几个API:(1)获取页面上列表中的值,并打印输出:System.out.println(selenium.getTable("xpath=/html/body/div[3]/form/table.1.1")); //输出列表中第1行第1列的值(2)判断页面上是否有某个文本:(只能判

VirtualBox COM对象获取失败

打开虚拟机,报错如下:弹出框:VirtualBox COM对象获取失败Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown works. PSDispatch looks fine. Weird. 返回 代码: E_NOINTERFACE (0x80004002) 组件: VirtualBoxClientWrap 界面: IVirtualBoxClient {d2937a8e

Javascript RegExp对象---获取url中某一个参数的值

RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/attributes实例:window.location.href:http://localhost:8100/aspx/main/ServiceCenter_list.aspx?category_id=93&page=2要匹配到的category_id=93:/category_id=\d+/g 创建 RegExp 对象的语法: new RegExp(pattern, at