将颜色分解为阴影的功能。 - 页 8

 
Nikolai Semko:
我从你的算法中删除了丁字裤。我对你为什么使用它们感到很神秘。看看代码,那我如何输出真实的颜色。 你有一堆不必要的检查,你使用了正切、数组排序等函数,我只+-*//。Mt4比较慢,这是可以理解的,但不会慢30倍。
好吧,我一会儿把我的算法贴在4号上看看。你为什么要用4呢?对于GUI来说,4是完全没有用的。它甚至不读取资源。从4码到5码的转换比反过来要难得多。

MT4可能要慢60倍。检查两个平台上的intarray填充 率,看看。

 
Nikolai Semko:
我从你的算法中删除了丁字裤。我对你为什么使用它们感到很神秘。看看代码,那我如何输出实际的颜色。 你有一堆不必要的检查,你使用了正切、数组排序等函数,我只+-*//。Mt4比较慢,这是可以理解的,但不会慢30倍。
好吧,我一会儿把我的算法贴在4号上看看。你为什么要用4呢?对于GUI来说,4是完全没有用的。它甚至不读取资源。将代码从4修改为5要比反过来难得多。

对于图形用户界面,4是非常好的。但我们不是在谈论这个问题。让我们不要偏离主题。

 
Nikolai Semko:
我从你的算法中删除了丁字裤。我对你为什么使用它们感到很神秘。看看代码,那我如何输出真实的颜色。 你有一堆不必要的检查,你使用了正切、数组排序等函数,我只+-*//。Mt4比较慢。

很明显,丁字裤是可以省略的。我以为这样做会更方便用户。如果函数被调用一次,节省微秒有什么意义?

 
Nikolai Semko:
你有一堆不必要的检查,你使用正切、数组排序等函数,而我只使用+-*/。

尼古拉,在你说我有问题之前,让我们确定你的算法确实更快、更好。我把我的算法放在MT5上,检查速度。而你把你的阵列打印出来,与Windows的颜色进行比较。(在这种情况下,你仍然必须使用字符串类型)。这是我使用它的原因之一。这也是出于比较的需要)。

 
Реter Konow:

尼古拉,在你说我有问题之前,让我们确定你的算法确实更快、更好。我把我的算法放在MT5上,检查速度。而你把你的阵列打印出来,与Windows的颜色进行比较。(在这种情况下,你仍然必须使用字符串类型)。这是我使用它的原因之一。我也需要它来进行比较)。

我在4号机上的算法比你的算法有4倍以上的优势。

这里是一个典型的例子,说明为什么使用4是不明智的。

首先,即使是带有+/-*的简单算法,工作速度也要慢5-7倍。

第二,我的函数立即变成了4,没有错误。我试了一下你的,做了一堆修正,但代码产生的值完全不同,有一些颜色的条纹。如果你不相信我,可以自己试试。

关键是,你用4个字来窃取你的时间。迟早你要重做从4到5的代码。而如果你完全转到5,你可能在两三年内就已经要做相反的程序了,因为4核不会像现在这样有需求,即使有需求,花在从5到4重制代码上的精力也是不相称的。

附加的文件:
 
Реter Konow:

尼古拉,在你说我有问题之前,让我们确定你的算法确实更快、更好。我把我的算法放在MT5上,检查速度。而你把你的阵列打印出来,与Windows的颜色进行比较。(在这种情况下,你仍然必须使用字符串类型)。这是我使用它的原因之一。这也是需要进行比较的)。

顺便说一下,在我的功能中,它的工作没有这种故障。

因此,你的算法中存在一个错误。你可以自己想办法。

 
Nikolai Semko:

我的4号算法的增益是你的4倍多。

这里是一个典型的例子,说明为什么使用4是不明智的。

首先,即使是简单的+/-*算法也要慢5-7倍。

第二,我的函数立即变成了4,没有错误。我试了一下你的,做了一堆修正,但代码产生的值完全不同,有一些颜色的条纹。如果你不相信我,可以自己试试。

关键是,你用4个字来窃取你的时间。迟早你要重做从4到5的代码。但是,如果你已经完全转到5,你可能在几年后就不需要再进行相反的程序了,因为4不会像现在这样有那么高的需求,即使有,你花在将代码从5转换到4上的努力也会与你再次花在上面的努力不相称。

尼古拉,我们不要被不相干的话题分散注意力。谈话的内容是关于算法的正确性和比较它们的速度。

  1. 通过打印数组中的颜色并将其与Windows调色板中的颜色进行比较,证明你的算法工作正常。
  2. 我暂时将我的算法翻译成MT5,并报告结果。

 
Реter Konow:

尼古拉,在你说我有问题之前,让我们确定你的算法确实更快、更好。我把我的算法放在MT5上,检查速度。而你把你的阵列打印出来,与Windows的颜色进行比较。(在这种情况下,你仍然必须使用字符串类型)。这是我使用它的原因之一。这也是需要进行比较的)。

要输出字符串类型,你不需要把它放在函数本身的主体中,而是在打印时把数值转换成该类型。

for (int l=0;l<256;l++) {Col.clr=Gradient[l]; Print("RGB = " + string(Col.c[2])+", "+string(Col.c[1])+", "+string(Col.c[0]));}
 
Nikolai Semko:

要输出一个字符串类型,你不需要把它放在函数本身的主体中,而是在打印时把数值翻译成该类型。

你又被其他的话题分散了注意力。问题不在于如何输出字符串类型。这是每个人的个人风格。

你改变了我的代码,并添加了很多你自己的代码。这使结果发生了很大的变化。我正在把所有东西翻译成MT5,并试图理解你在这里写的东西。

关键是,在与调色板 比较时,我一切都很清楚。但当用你的算法在屏幕上显示时,我有一个问题。我想弄清楚问题出在哪里。

 
Реter Konow:

你又被其他的话题分散了注意力。这不是一个输出类型字符串的问题。这是每个人的个人风格。

你改变了我的代码,并添加了很多你自己的代码。这使结果发生了很大的变化。我正在把所有东西翻译成MT5,并试图理解你在这里写的东西。

关键是,在与调色板比较时,我一切都很清楚。但当用你的算法在屏幕上显示时,我有一个问题。我想弄清楚问题出在哪里。

彼得,问题是你在论坛上发布了一个功能,让大家看到并应用颜色分解。但这个函数并没有生成必要的颜色数组,它只是生成了一个只适合打印 的字符串数组,而不是在屏幕上显示自己的梯度。它是一头猪,不尊重他人。所以,如果有人需要,就自己翻译吧。