gpt4 book ai didi

multithreading - 划分工作,将任务分配给线程数组

转载 作者:行者123 更新时间:2023-12-01 21:49:55 25 4
gpt4 key购买 nike

我需要对备忘录中的文本进行数学计算。 [文件大小:~2mb]

一个合适的例子是我需要解码的编码文本。

我将备忘录文本传递给一个字符串以对其进行解码。我想使用线程运行解码函数会更快。但经过一番谷歌搜索后,我没有找到适合我目的的好例子。

示例函数:

function entr_base_N(my_text:String):String;
var
ts_hamil64:Integer;
begin
For ts_hamil64 := 1 to Length(my_text) do
begin
Result:= Result + Chr(Ord(my_text[ts_hamil64])+10)
end;
end;
.....
.....
Memo1.Text:=entr_base_N(Memo1.Text)

我想将工作分成小块,平均分配工作,比如说 3..8 个线程,并将我的解码函数分配给这些线程。您能指导我吗?

当前处理文本文件的时间:~35秒。感谢您的热心帮助。

最佳答案

线程不是问题。您的函数 entr_base_N 会立即运行。在调试器中尝试。你会发现根本不需要时间。在现代计算机上处​​理 2MB 字符串是微不足道的。也就是说,我总是建议在可能的情况下预先分配返回缓冲区。

所有时间都花在将结果字符串发送回备忘录控件上。发生的情况是您将 #13 和 #10 字符转换为 #23 和 #20。不管出于什么原因,备忘录控件不喜欢这样。在我看来,您发回的字符串根本没有换行,并且备忘录的自动换行代码性能很差。

查看情况的一种快速但肮脏的方法是在备忘录中将 WordWrap 设置为 False

这里的重要教训是,您必须在尝试优化之前正确识别瓶颈。不过,这是一个很容易陷入的陷阱,正如我最初笨手笨脚地回答这个问题所表明的那样。

关于multithreading - 划分工作,将任务分配给线程数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com