Re[33]: Работа - с чего начать: С++ или С#?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 19.05.09 09:26
Оценка: 5 (3)
Здравствуйте, 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>НЕМНОГО ?!! Ты уверен что это действительно будет НЕМНОГО? (кстати, что такое НЕМНОГО? пара процентов ? или, может быть, разы ?)

Уверен, что разница будет не такая, как между выполнением кода и интерпретацией
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.