Vb.net 使用多线程加快执行速度
近似程序行为: 我有一个地图图像,其中的数据与RGB索引指示的地图相关。数据已填充到MS Access数据库中。我将数据库中的信息作为数组导入到我的程序中,并按照我希望程序运行的顺序对它们进行排序 我想让程序找到最近的像素,它与正在比较的当前像素具有不同的颜色。(颜色存储为对象像素的字符串属性) 第一个问题:我应该使用整数来表示颜色而不是字符串吗?这会使比较功能运行得更快吗 为了找到不同颜色的最近像素,程序从当前像素周围的所有8个相邻像素开始。如果未找到非匹配,则它将继续到下一个“度”,并以这种方式从当前像素向外螺旋,直到找到非匹配。找到时,非匹配的颜色将另存为属性。在我找到每个像素的不匹配后,数据被重新插入到数据库中 程序以我编写的方式实现了我想要的,但是速度非常慢。24小时后,我的执行率只有3%左右 问题二:我的程序行为听起来是否正确?如果你必须完成这个任务,你会使用这个算法吗 问题三:为了更快地完成程序的执行,我使用线程是否合适?这到底是怎么回事?(我是线程新手,但对语法略知一二) 问题四:对于我的程序来说,找到每个像素的不匹配项并在找到后立即将其插入数据库会更“智能”吗?(我猜测这在多线程中会很好,因为当一条记录访问数据库(插入)时,另一条记录访问像素数组(程序中的共享全局变量) 问题五:如果线程化是一个好主意,我猜我会将记录分成更易于管理的块(即四分之一),并让每个线程对其指定数量的记录运行相同的函数?我真的很接近了吗 请让我知道,如果我可以澄清或提供代码样本,我只是觉得这是一个概念性的主题,所以不想负担过重的职位Vb.net 使用多线程加快执行速度,vb.net,multithreading,algorithm,Vb.net,Multithreading,Algorithm,近似程序行为: 我有一个地图图像,其中的数据与RGB索引指示的地图相关。数据已填充到MS Access数据库中。我将数据库中的信息作为数组导入到我的程序中,并按照我希望程序运行的顺序对它们进行排序 我想让程序找到最近的像素,它与正在比较的当前像素具有不同的颜色。(颜色存储为对象像素的字符串属性) 第一个问题:我应该使用整数来表示颜色而不是字符串吗?这会使比较功能运行得更快吗 为了找到不同颜色的最近像素,程序从当前像素周围的所有8个相邻像素开始。如果未找到非匹配,则它将继续到下一个“度”,并以这种
5.)我建议您不要将数组分块:如果一个分块的边缘上的像素在另一个分块中具有最近的不匹配,您将遇到问题。相反,如果您使用例如4个线程,则让它们运行1.)从西北角e,然后是S 2.)从东南角W,然后是N 3.)从东北角S,然后是W 4。从西南角N,然后是E是的,我会将颜色字符串转换为整数以提高速度,如果你想在屏幕上显示它们,甚至可以转换为颜色结构
如果可以避免的话,不要直接使用数据库。在开始之前将必要的数据从数据库复制到数组中,完成后将结果复制回来。StackOverflow每篇文章只想问一个问题。嗨,Christine,欢迎来到StackOverflow。虽然你的问题很有趣,但话题太多了。关于如何使用线程的问题已经不计其数,如右侧“Related”(相关)列所示,因此我建议从这个问题中删除线程,看看另一个问题是否有适合您的答案。我不再阅读“我应该使用整数吗?”。当然可以。巨大的差异。嗨@Eugen Rieck,非常感谢你的回复。这些建议非常有用,我很高兴明天能尝试一下。干杯