Здравствуйте, IID, Вы писали:
IID>Здравствуйте, samius, Вы писали:
S>>Ты просил пример, где программа на C++ сольет в разы. Я привел. Пример, где сольет дотнет я не просил.
IID>Ссылку с C# кодом подтрудись привести, в ворохе твоих сообщений сходу не нашёл. И учти, я не буду писать абсолютно идентичный вариант, если используется кодогенерация. Мне моё время дорого. Раз этого не хочешь сделать ты — я сам зафиксирую один (произвольный) вариант исполнения алгоритма. Не факт что он будет оптимальным для тебя.
Собрался доказывать что интерпретируемый вариант быстрее компилированного? Маньяк!
Ссылки на исходники небыло.
Вобщем так:
Примерно такого рода DSL, придуманный под string.Replace, чтобы без парсинга
function Сфера { return x*x + y*y + z*z; }
function XPlaneFunc { return x;}
function YPlaneFunc { return y;}
function ZZZFunc
{
double xmy = x - y; return xmy - Math.Round(xmy, 1);
}
function Спираль
{
double xk=x*20; double a=0.2; double b=1.5;
double y1=y*b-a*Math.Sin(xk);
double z1=z*b-a*Math.Cos(xk);
return y1*y1 + z1*z1;
}
body Голова
{
return XPlaneFunc(p) < 0.0 && Сфера(p) < 1.0 && !Шлиц;
}
body Spiral
{
return XPlaneFunc(p) > 0.0 && XPlaneFunc(p) < 1.75 && Math.Abs(Спираль(p)) < 0.5;
}
body Шлиц
{
return XPlaneFunc(p) < -0.4 && YPlaneFunc(p) < 0.1 && YPlaneFunc(p) > -0.1;
}
body Strokes
{
return (Math.Abs(0.5 - XPlaneFunc(p)) < 0.02
|| (XPlaneFunc(p) > 0.5 && Math.Abs(ZZZFunc(p)) < 0.005))
&& !Spiral && !Голова;
}
body All
{
return Голова || Spiral || Strokes || Wall;
}
body Wall
{
return XPlaneFunc(p) > 0.5 && !Strokes && !Spiral;
}
colors GetColor
{
if(Голова) return Color.Blue;
if(Spiral)return Color.Red;
if(Strokes)return Color.Black;
if(Wall)return Color.Gray;
return Color.Transparent;
}
Далее рисуем на растре плоскость Z = 0 в квадрате -1<x<2; -1.5<y<1.5
Должно получиться что-то типа болта, вкрученного в стену.
Непременное условие — возможность изменения описания поверхностей в рантайме.
Примерная скорость реализации на шарпе 5.9 млн запросов по цвету в секунду на одном ядре.
На днях выложу картинку в блоге.
Учти, твое время я оплачивать не буду!
S>>Доказывать что md5 на С будет немного быстрее C# мне не надо.
IID>НЕМНОГО ?!! Ты уверен что это действительно будет НЕМНОГО? (кстати, что такое НЕМНОГО? пара процентов ? или, может быть, разы ?)
Уверен, что разница будет не такая, как между выполнением кода и интерпретацией