精易论坛

标题: 有没有能处理几万行文本的【文本_删除指定文本行】速度... [打印本页]

作者: 查过    时间: 2025-6-19 12:04
标题: 有没有能处理几万行文本的【文本_删除指定文本行】速度...
有没有能处理几万行文本的【文本_删除指定文本行】速度块些的
精易的辣个,太慢了

作者: 独孤求胜    时间: 2025-6-19 12:04
编译出来后速度不快不慢,6万行,几十毫秒

删文本行.rar (2.98 MB, 下载次数: 7)




补充内容 (2025-6-19 18:56):
这个是包含读取与保存文件的时间
作者: a4561482    时间: 2025-6-19 12:10
试试 快速字节集对象 看看行不行

作者: aiky123    时间: 2025-6-19 12:31
正则 替换
作者: 1182410163    时间: 2025-6-19 13:12
建议数组操作
作者: laihobglei    时间: 2025-6-19 14:11
  
DLL命令名返回值类型公开备 注
RtlMoveMemory_整数型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
RtlMoveMemory
参数名类 型传址数组备 注
目标地址整数型
源地址整数型
长度整数型
DLL命令名返回值类型公开备 注
MultiByteToWideChar整数型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
MultiByteToWideChar
参数名类 型传址数组备 注
CodePage整数型
dwFlags整数型
lpMultiByteStr文本型
cchMultiByte整数型
lpWideCharStr整数型
cchWideChar整数型
DLL命令名返回值类型公开备 注
WideCharToMultiByte整数型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
WideCharToMultiByte
参数名类 型传址数组备 注
CodePage整数型
dwFlags整数型
lpWideCharStr整数型
cchWideChar整数型
lpMultiByteStr文本型
cchMultiByte整数型
lpDefaultChar整数型
lpUsedDefaultChar整数型
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
文本_极速删除行文本型 
参数名类 型参考可空数组备 注
参_文本内容文本型
参_要删除的行号数组整数型
变量名类 型静态数组备 注
局_文本长度整数型 
局_行起始位置整数型0
局_行结束位置整数型0
局_i整数型 
局_当前行整数型 
局_最大行号整数型 
局_删除标记逻辑型0
局_结果文本文本型 
局_临时文本文本型 
局_文本长度 = 取文本长度 (参_文本内容)
局_当前行 = 1
重定义数组 (局_行起始位置, 假, 局_文本长度 + 1)
重定义数组 (局_行结束位置, 假, 局_文本长度 + 1)
重定义数组 (局_删除标记, 假, 局_文本长度 + 1)
局_行起始位置 [1] = 1
计次循环首 (局_文本长度, 局_i)
如果真 (取文本中间 (参_文本内容, 局_i, 1)#换行符 )
局_行结束位置 [局_当前行] = 局_i
局_当前行 = 局_当前行 + 1
局_行起始位置 [局_当前行] = 局_i + 1

计次循环尾 ()
局_行结束位置 [局_当前行] = 局_文本长度
局_最大行号 = 局_当前行
计次循环首 (取数组成员数 (参_要删除的行号数组), 局_i)
如果真 (参_要删除的行号数组 [局_i] > 0 参_要删除的行号数组 [局_i] ≤ 局_最大行号)
局_删除标记 [参_要删除的行号数组 [局_i]] = 真

计次循环尾 ()
局_结果文本 = “”
计次循环首 (局_最大行号, 局_i)
如果真 (局_删除标记 [局_i])
局_临时文本 = 取文本中间 (参_文本内容, 局_行起始位置 [局_i], 局_行结束位置 [局_i] - 局_行起始位置 [局_i] + 1)
局_结果文本 = 局_结果文本 + 局_临时文本
如果真 (局_i < 局_最大行号)
局_结果文本 = 局_结果文本 + #换行符


计次循环尾 ()
返回 (局_结果文本)



测试对比,比精易模块快20倍!!!

作者: ffshen    时间: 2025-6-19 14:17
正则的最快速
作者: 萧楚楠    时间: 2025-6-19 15:39
远程看看嘞,实在不行给你弄个汇编版
作者: tj5523    时间: 2025-6-19 17:14
只用了精益模块,6万多行耗时750毫秒,内存换速度

  
子程序名返回值类型公开备 注
删除指定文本行  
参数名类 型参考可空数组备 注
文件文本型
行数整数型
变量名类 型静态数组备 注
文件号整数型 
内容文本型 
分割数组文本型0
i整数型 
开始时间文本型 
结束时间文本型 
开始时间 = 时间_取现行时间戳 ()
内容 = UTF8到文本 (读入文件 (文件))
分割数组 = 分割文本 (内容, #换行符, )
调试输出 (“文件总行数:”到文本 (取数组下标 (分割数组, )))
调试输出 (“删除行内容:” + 分割数组 [行数])
删除成员 (分割数组, 行数, )
文件号 = 打开文件 (“C:\Users\Administrator\Desktop\新建文本文档2.txt”, #改写, )
变量循环首 (1, 取数组下标 (分割数组, ), 1, i)
写文本行 (文件号, 到文本 (文本到UTF8 (分割数组 [i])))
变量循环尾 ()
关闭文件 (文件号)
结束时间 = 时间_取现行时间戳 ()
调试输出 (“耗时:”到文本 (到长整数 (结束时间)到长整数 (开始时间)) + “毫秒”)
调试输出 (“完成”)


i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2025-6-19 17:24):
冒犯了,我试了精益的,2毫秒

补充内容 (2025-6-19 17:27):
哦搞错了,我敲错代码了,精益的确实慢,72835毫秒

454A3680-CE74-48f3-B8E6-F7A347408A57.png (17.52 KB, 下载次数: 0)

454A3680-CE74-48f3-B8E6-F7A347408A57.png





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4