ненавижу прогресс
Aug. 24th, 2007 05:19 amMSVC 2005 умеет параллельный билд. Круто, не прошло и 10 лет, как мелкософт сдул таки наконец фичу из GNU Make. Собираю проект, состоящий из десятка компонент на С и одного на С++. Наблюдаю приемлемую загрузку обоих процессоров, компилируется быстро.... пока С. Как начинает С++, так загрузка только одного горшка и тормоза. Либо мелкософт не умеет параллельно компилировать С++, либо ихняя компиляция параллелизуется только на уровне проектов.
Блядь, ну как так можно, а?
Блядь, ну как так можно, а?
no subject
Date: 2007-08-24 01:28 am (UTC)no subject
Date: 2007-08-24 09:40 am (UTC)В Borland модели они генерятся каждый раз, а линкер потом выкидывает все экземпляры, кроме одного.
В AT&T модели надо ручками указывать, где и когда создать инстанс.
Разве что Microsoft отличился и придумал что-то своё...
no subject
Date: 2007-08-24 09:48 am (UTC)no subject
Date: 2007-08-29 12:17 am (UTC)no subject
Date: 2007-08-29 12:21 am (UTC)no subject
Date: 2007-08-24 01:39 am (UTC)why dont you create a library?
no subject
Date: 2007-08-24 09:50 am (UTC)no subject
Date: 2007-08-24 10:46 am (UTC)no subject
Date: 2007-08-24 11:03 am (UTC)no subject
Date: 2007-08-29 12:21 am (UTC)no subject
Date: 2007-08-29 12:57 am (UTC)no subject
Date: 2007-09-21 09:32 pm (UTC)Так это же плюсы. Темплейты поди используются, boost, все дела. Как известно, в плюсах темплейты обладают немярянной вычислительной способностью (Turing completeness), поэтому можно писать корректные с точки зрения языка программы, компиляция которых:
1) занимает неограниченное время (например, больше жизни вселенной :> )
2) отнимает сколько угодно памяти
У вас сколько компилируется вот такая вот простенькая программа?
#include using namespace std; template < bool cond, int true_result, int false_result > struct if_; template < int true_result, int false_result > struct if_ < true, true_result, false_result > { enum { val = true_result }; }; template < int true_result, int false_result > struct if_ < false, true_result, false_result > { enum { val = false_result }; }; template < int m, int n > struct ack { enum { val = ack< m - 1, ack< m, n - 1 >::val >::val }; }; template < int n > struct ack< 0, n > { enum { val = n + 1 }; }; template < int m > struct ack< m, 0 > { enum { val = ack< m - 1, 1 >::val }; }; int main () { cout << "ack(3,10) = " << ack< 3, 10 >::val << endl; }У меня:
Если слишком быстро, рекомендую поиграться со вторым параметром. :)
no subject
Date: 2007-09-21 09:35 pm (UTC)no subject
Date: 2007-09-22 06:08 am (UTC)tt.cpp(19) : fatal error C1202: recursive type or function dependency context too complex