Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.07.10 06:58
Оценка:
Здравствуйте, HowardLovekraft, Вы писали:

HL>Какая-нибудь засада с рекурсивным определением generic'ов?


Типа того.
Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.07.10 06:58
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Не связано с ResourceProvider'ом?


Нет.
Re: [Этюд, C#] Долгая компиляция
От: Nuseraro Россия  
Дата: 22.07.10 08:47
Оценка: 55 (6)
Здравствуйте, nikov, Вы писали:

N>Какой самый короткий код вы можете написать, чтобы он компилировался больше минуты?


Думаю, цель достигнута:

struct R<T1, T2, T3>
{
    T1 m1;
    T2 m2;
    T3 m3;
}

struct R3<T> 
{
    R<T, T, T> m;
}

struct A<T>
{
    R3<R3<R3<T>>> m;
}

struct B<T>
{
    A<A<A<T>>> m;
}

struct C<T>
{
    B<B<T>> m;
}

class R
{
    C<int> q;         
    static void Main(string[] args)
    {
        
    }
}
Homo Guglens
Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.07.10 08:51
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Думаю, цель достигнута:


Неплохая первая попытка. А можешь уложиться меньше, чем в 100 байт?
Re[3]: [Этюд, C#] Долгая компиляция
От: Spiceman  
Дата: 22.07.10 10:44
Оценка:
Здравствуйте, nikov, Вы писали:

N>Неплохая первая попытка. А можешь уложиться меньше, чем в 100 байт?


А почему оно долго компилится?
Re[3]: [Этюд, C#] Долгая компиляция
От: Nuseraro Россия  
Дата: 22.07.10 11:18
Оценка: 39 (3) :))) :))) :)
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Nuseraro, Вы писали:


N>>Думаю, цель достигнута:


N>Неплохая первая попытка. А можешь уложиться меньше, чем в 100 байт?


Могу. 99.

struct R<T>{T a,b,c,d;}struct A<T>{R<R<R<R<T>>>>m;}struct B{A<A<A<A<int>>>>q;static void Main(){}}
Homo Guglens
Re[4]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.07.10 11:23
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Могу. 99.

N>
struct R<T>{T a,b,c,d;}struct A<T>{R<R<R<R<T>>>>m;}struct B{A<A<A<A<int>>>>q;static void Main(){}}


Если выбросить ненужный метод Main, то получится 88. У меня есть решение в 65.
Re: [Этюд, C#] Долгая компиляция
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.07.10 14:46
Оценка:
Здравствуйте, nikov, Вы писали:

N>Какой самый короткий код вы можете написать, чтобы он компилировался больше минуты?


Вложенные лямбды, ломающие эвристики компайлера?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.07.10 08:13
Оценка:
Здравствуйте, AndrewVK, Вы писали:

N>>Какой самый короткий код вы можете написать, чтобы он компилировался больше минуты?


AVK>Вложенные лямбды, ломающие эвристики компайлера?


Такой способ есть, но, боюсь, в 100 байт здесь никак не уложиться.
Re[5]: [Этюд, C#] Долгая компиляция
От: SaZ  
Дата: 23.07.10 12:10
Оценка:
Здравствуйте, nikov, Вы писали:

N>Если выбросить ненужный метод Main, то получится 88. У меня есть решение в 65.


оффтоп: Владимир, не томите, выкладывайте уже
Re[6]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.07.10 12:14
Оценка: 76 (11)
Здравствуйте, SaZ, Вы писали:

N>>Если выбросить ненужный метод Main, то получится 88. У меня есть решение в 65.


SaZ>оффтоп: Владимир, не томите, выкладывайте уже


Даже 62:

class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
Re[7]: [Этюд, C#] Долгая компиляция
От: artelk  
Дата: 23.07.10 12:18
Оценка: 1 (1) +1
Здравствуйте, nikov, Вы писали:

N>
N>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>


Жесть
Re[7]: [Этюд, C#] Долгая компиляция
От: Spiceman  
Дата: 23.07.10 12:27
Оценка: :))) :))
Здравствуйте, nikov, Вы писали:

N>Даже 62:


N>
N>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>


Кажется я ошибся в выборе профессии.
Re[7]: [Этюд, C#] Долгая компиляция
От: SE Украина  
Дата: 23.07.10 12:34
Оценка:
Здравствуйте, nikov, Вы писали:

N>
N>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>


У, шайтан. У меня студия завалилась даже без компиляции, я просто подвел указатель мыши к выделенному символу
Re[8]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 23.07.10 12:36
Оценка:
Здравствуйте, SE, Вы писали:

SE>У, шайтан. У меня студия завалилась даже без компиляции, я просто подвел указатель мыши к выделенному символу


Такие вещи надо из командной строки компилировать
Кстати, получается сборка в 28 Мб.
Re[8]: [Этюд, C#] Долгая компиляция
От: Nuseraro Россия  
Дата: 23.07.10 12:51
Оценка:
Здравствуйте, SE, Вы писали:

SE>Здравствуйте, nikov, Вы писали:


N>>
N>>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>>


SE>У, шайтан. У меня студия завалилась даже без компиляции, я просто подвел указатель мыши к выделенному символу


Ну такого результата я достиг довольно быстро за счет цепочки
using L1 = X<int,int,int>
using L2 = X<L1,L1,L1>
...
наводим мыхой на L10
Homo Guglens
Re[7]: [Этюд, C#] Долгая компиляция
От: vdimas Россия  
Дата: 23.07.10 17:30
Оценка: 20 (2)
Здравствуйте, nikov, Вы писали:

N>
N>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>


С++ аналогичное куда как быстрее рожает:

template<typename A, typename B, typename C, typename D, typename E>
struct X { 
    struct Y : public X<Y, Y, Y, Y, Y> { 
        typedef X<Y, Y, Y, Y, Y> base;
        typename base::Y::base::Y::base::Y::base::Y::base::Y::base::Y::base::Y *x;
    }; 
};


Ввиду того, что Y::Y — это сигнатура конструктора, присутствующего в С++ всегда по умолчанию, и перекрывающая вложенный тип Y, доставшийся от базового X, пришлось к вложенному Y указать явный путь через базовый тип. В любом случае, компилятор отрабатывает мгновенно.

Для дотнета там 5*5*9=255 всего типов надо сгенерить, т.е. C# компилятору тоже делать особо нечего в течении минуты. Как показала попытка посмотреть это все рефлектором, тормозит сам рантайм, а не компилятор, а вот это уже крайне неприятно. Да и 28 метров сборка — перегиб.
Re[3]: [Этюд, C#] Долгая компиляция
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.07.10 21:52
Оценка:
Здравствуйте, nikov, Вы писали:

N>Такой способ есть, но, боюсь, в 100 байт здесь никак не уложиться.


Ага. Надо Хейльсбергу про частичное применение рассказать .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: [Этюд, C#] Долгая компиляция
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.07.10 21:53
Оценка:
Здравствуйте, nikov, Вы писали:

N>
N>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>


Что-то я туплю. Что здесь означает Y.Y?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: [Этюд, C#] Долгая компиляция
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.07.10 21:59
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, nikov, Вы писали:


N>>
N>>class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}
N>>


VD>Что-то я туплю. Что здесь означает Y.Y?


А блин, понял. Это же рекурсивное определение.

А по уму как на такую фигню нужно реагировать? И вообще, в реальной жизни это может быть применено?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.