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[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: [Этюд, 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: [Этюд, C#] Долгая компиляция
От: Aen Sidhe Россия Просто блог
Дата: 21.07.10 12:31
Оценка: :))) :))
Здравствуйте, nikov, Вы писали:

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


Boost можно использовать? :D
С уважением, Анатолий Попов.
ICQ: 995-908
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>


Кажется я ошибся в выборе профессии.
[Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.07.10 12:24
Оценка: 60 (3)
Какой самый короткий код вы можете написать, чтобы он компилировался больше минуты?
Re: [Этюд, C#] Долгая компиляция
От: Lloyd Россия  
Дата: 21.07.10 12:40
Оценка: :)))
Здравствуйте, nikov, Вы писали:

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


AssemblyKeyFileAttribute с ссылкой на файл на медленной шаре?
Re[7]: [Этюд, C#] Долгая компиляция
От: TK Лес кывт.рф
Дата: 21.07.10 21:16
Оценка: 42 (2)
Здравствуйте, Пельмешко, Вы писали:

0K>>>Вроде нет.

П>Я проверил, не вызывается конечно же.

точно, начиная со второй версии фреймворка это изменилось. раньше, пермишены сохранялись в xml виде прямо в метаданных.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
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[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[5]: [Этюд, C#] Долгая компиляция
От: Lloyd Россия  
Дата: 21.07.10 12:49
Оценка: :)
Здравствуйте, nikov, Вы писали:

L>>Т.е. это чисто время работы компилятора, без времени на чтение каких-либо файлов?


N>Да.


На Nemerle могу — макрос с Thread.Sleep(60*1000).
Re: [Этюд, C#] Долгая компиляция
От: Nuseraro Россия  
Дата: 21.07.10 13:08
Оценка: :)
Совсем забыл университетский курс и не помню, можно ли считать такое долгой компиляцией?

Если да, то для затравки вот:

namespace zatravka
{
    public class DAttribute : System.Attribute
    {
        static DAttribute()
        {
            System.Threading.Thread.Sleep(70000);
        }
    }

    class A
    {
        [D]
        static void Main(string[] args)
        {
            
        }
    }
}
Homo Guglens
Re: [Этюд, C#] Долгая компиляция
От: 0K Ниоткуда  
Дата: 21.07.10 16:46
Оценка: +1
Здравствуйте, nikov, Вы писали:

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


Не связано с ResourceProvider'ом?
Re: [Этюд, C#] Долгая компиляция
От: Misha87  
Дата: 21.07.10 12:26
Оценка:
Здравствуйте, nikov, Вы писали:

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


Так как в условиях задачи не оговариваются характиристики железа, то думаю любой код на NET, компилирующийся на 286-х будет компилироваться больше минуты
Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.07.10 12:30
Оценка:
Здравствуйте, Misha87, Вы писали:

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

M>Так как в условиях задачи не оговариваются характиристики железа, то думаю любой код на NET, компилирующийся на 286-х будет компилироваться больше минуты

Ну скажем, на современном процессоре с частотой около 2 GHz. Исходник <100 байт, компиляция >1 мин (нетрудно сделать и ещё больше), но а конце концов успешно завершается.
Re[2]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.07.10 12:32
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Boost можно использовать? :D


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

L>AssemblyKeyFileAttribute с ссылкой на файл на медленной шаре?


Проще уж было бы исходники положить на медленную шару.
А можешь без искусственных аппаратных задержек и без ссылок на внешние файлы?

Вариант со стотыщмильёнами пустых файлов исходников тоже не считается.
Re[3]: [Этюд, C#] Долгая компиляция
От: Lloyd Россия  
Дата: 21.07.10 12:45
Оценка:
Здравствуйте, nikov, Вы писали:

N>Проще уж было бы исходники положить на медленную шару.

N>А можешь без искусственных аппаратных задержек и без ссылок на внешние файлы?

N>Вариант со стотыщмильёнами пустых файлов исходников тоже не считается.


Т.е. это чисто время работы компилятора, без времени на чтение каких-либо файлов?
Re[4]: [Этюд, C#] Долгая компиляция
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.07.10 12:46
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Т.е. это чисто время работы компилятора, без времени на чтение каких-либо файлов?


Да.
Re: [Этюд, C#] Долгая компиляция
От: HowardLovekraft  
Дата: 21.07.10 13:03
Оценка:
Какая-нибудь засада с рекурсивным определением generic'ов?
Re[2]: [Этюд, C#] Долгая компиляция
От: Lloyd Россия  
Дата: 21.07.10 13:11
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Если да, то для затравки вот:


Компилится мгновенно.
Re[2]: [Этюд, C#] Долгая компиляция
От: Пельмешко Россия blog
Дата: 21.07.10 13:38
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Совсем забыл университетский курс и не помню, можно ли считать такое долгой компиляцией?


N>Если да, то для затравки вот:


Экземпляр класса-атрибута создаётся при получении его через рефлексию
Re[3]: [Этюд, C#] Долгая компиляция
От: TK Лес кывт.рф
Дата: 21.07.10 14:54
Оценка:
Здравствуйте, Lloyd, Вы писали:

N>>Если да, то для затравки вот:

L>Компилится мгновенно.

Наверное, имелся в виду SecurityAttribute. У него CreatePermission вызывается на этапе компиляции.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: [Этюд, C#] Долгая компиляция
От: 0K Ниоткуда  
Дата: 21.07.10 16:34
Оценка:
Здравствуйте, TK, Вы писали:

TK>Наверное, имелся в виду SecurityAttribute. У него CreatePermission вызывается на этапе компиляции.


Вроде нет.
Re[5]: [Этюд, C#] Долгая компиляция
От: TK Лес кывт.рф
Дата: 21.07.10 19:14
Оценка:
Здравствуйте, 0K, Вы писали:

TK>>Наверное, имелся в виду SecurityAttribute. У него CreatePermission вызывается на этапе компиляции.

0K>Вроде нет.

В документации написано:

At compile time, attributes convert security declarations to a serialized form in metadata. Declarative security data in metadata is created from the permission that this method returns that corresponds to this attribute.


Как вы представляете компилятор получит из атрибута security declarations в serialized виде для сохранения в метаданных не обращаясь при этом к коду атрибута?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: [Этюд, C#] Долгая компиляция
От: Пельмешко Россия blog
Дата: 21.07.10 19:43
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, 0K, Вы писали:


TK>>>Наверное, имелся в виду SecurityAttribute. У него CreatePermission вызывается на этапе компиляции.


0K>>Вроде нет.


Я проверил, не вызывается конечно же.

TK>В документации написано:


TK>
TK>At compile time, attributes convert security declarations to a serialized form in metadata.
Declarative security data in metadata is created from the permission that this method returns that corresponds to this attribute.
TK>


TK>Как вы представляете компилятор получит из атрибута security declarations в serialized виде для сохранения в метаданных не обращаясь при этом к коду атрибута?


Так же как и с обычными атрибутами: информация о том, какой конструктор атрибута вызвали, какие параметры передали, какие named-параметры указали и в какое значение — это и есть сериализованная форма атрибута — security declarations в данном контексте документации.
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[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[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[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[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?


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

А по уму как на такую фигню нужно реагировать? И вообще, в реальной жизни это может быть применено?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: [Этюд, C#] Долгая компиляция
От: vdimas Россия  
Дата: 23.07.10 22:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А по уму как на такую фигню нужно реагировать? И вообще, в реальной жизни это может быть применено?


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