LINUX.ORG.RU

Один из лучших компиляторов C++ для Linux прекращает существование


2

0

Один из лучших компиляторов С++ для Linux, KAI C++, прекращает свое существование с 30 апреля 2002 года, через два года после покупки Kuck & Accociates Inc. компанией Intel. 30 апреля будут прекращены продажи, поддержка и исправление ошибок в существующих релизах будут продолжаться до конца 2003 года. Технологии KAI будут интегрированы в компиляторы Intel. В настоящее время компиляторы Intel уступают KAI как по уровню совместимости со стандартом, так и по возможностям оптимизации.

>>> Подробности



Проверено:

2anonymous (*) (2002-04-27 10:02:37.263):

Ну хорошо, смотрю я на разрекламированный OCaml - на их стандартной задаче - числах Фибоначчи ( вычисление с помощью рекурсивного вызова) абсолютно такая же задача на C++ дает скорость в 5-ть раз больше при вычислении 40-го элемента - 5 сек и 27 сек соответственно.У g++ -O3 и только. А такое отставание даже на дескторе плохо смотрится. Правда в GEANT - погрешность увеличится всего в 2 раза (при том же времени счета).

anonymous
()

Ладно, пусть этот треп посидит на втором месте!

anonymous
()

Однажды уже постил.
Это все знают. Тем не менее повторю.

На С с полюсами можно писать в любом стиле!!!!!!!!!!!!
Ха! конечно _если_умеешь_.

С без плюсов - просто конфетка.
На нем тоже можно писать по-любому
Только _уметь_надо_еще_больше_.

А то, что FORTRAN лучшая число дробилка
так это бред сивой кобылы.
Даже ЦЕРН переводит все на прлюсы.
(для для особо одаренных: "даже" потому, что море FORTRAN библотек)

Java - ни С, ни Бейсик ни Паскаль - то есть никто не знает что это.
Я слыхал, что это КОФЕ.[:0)))
Но это уже личное мнение.

Вообще тенденция изолировать программера от 
железа мне не нравится.

То, что годится для WWW и потому модно 
совершенно не годится для расчетов.

Bear


anonymous
()

>Athlon _нормальный_ на 1ghz (не твиканый), wcpuid нет под рукой, XP English >Corporate, MSVC 6.0, Ram ddr 256mb и даёт 39 sec, код от lenina. =)

Тоже Athlon _нормальный_ на 1ghz (не твиканый), обычная мать КТ133
с обычной паматью 133 на 256мб, причем мать не может разгонять память
совсем:((, дистр РН-7.1 glibc-2.2.5 gcc2.96-108, time = 18 seconds.
Дома машина примерно такая же, только мать пошустрее с памятью работает,
думаю, результат будет гораздо лучше...

McMCC ★★★
()

Ща вы будете смеяться.
То, что я постил до этого, был M$VC 4.1.
Сегодня поставил M$VC 6.0. Вот такие результаты :
M$VC, w98           - 31с
M$МС, w2kPro        - 23с :o
icc,  linux-2.4.17  - 21c
gcc,  linux-2.4.17  - 20c :)

Ключи уже приводил, у M$VC - стандартные, те что в Release. Пробовал
те, что тут публиковались - те же самые результаты. w98 абсолютно 
чистая, для игрушек, никаких антивирусов и ничего подобного. На w2k 
крутится апач, ftp сервер, стадатные сервисы. Во как :) Да, и прежде,
чем кричать про кривые руки, попробуйте прогоните у себя подобный 
тест.

Любители покричать что де нада переписывать код под компилятор, 
пусть оптимизируют под компилятор, а я буду юзать компиялтор, который
оптимизирует мой кривой код, а не принуждает меня мучиться над каждой
строкой алгоритма. Да, и опыт работы с icc показывает, что все ключи, 
кроме -O3 ему вредны. Этот векторизатор дурацкий, например, такое 
отчебучивает, что лучьше выключить его нахрен, чем пытаться от него
хоть чего-то толковое выбить. 

lenin
()

Специально давно не тестировал, 
но по моим старым тестам - gcc the best.
к сожалению КАЙ не пробовал.

Тут какая то книжка по фукциональному 
программированию появилась. 
(может Antihrist написал?;-0)
Там был эпиграф
(не помню чей). приблизительно так:


"Через пять лет все будут программировать 
на одном языке. 
Неизвестно только, когда начнутся эти пять лет"
;-))

Bear

anonymous
()
Ответ на: комментарий от lenin

Ща вы будете смеяться.
То, что я постил до этого, был M$VC 4.1.
Сегодня поставил M$VC 6.0. Вот такие результаты :
M$VC, w98           - 31с
M$МС, w2kPro        - 23с :o
icc,  linux-2.4.17  - 21c
gcc,  linux-2.4.17  - 20c :)


2lenin

Не хочется вспоминать, но Вынь 95-98
что-то во что-то преобразует.
в каких то случаях 32 разрядные вызовы в 16 разрядные
Кроме того , очевидно, влияет приотитет задач и чем еще 
Вынь занята. даже чистая. Надо бы посмотреть 
сообшения (если интересно)

Может не сильно вру;-))

Bear

anonymous
()

McMCC (*) (2002-04-27 11:17:10.556)

сегодня протестирую на slackware 8.0 =) посмотрим, думаю результат будет на порядок лучше.

anonymous
()

2 Bear anonymous (*) (2002-04-27 11:15:02.843)

А мне тут говорили, что эта перепись всего и вся на С++ в Церне - глупость о..енная. Вы о результатах что нибудь знаете, или только о процессе?

Виндузятник.

anonymous
()
Ответ на: комментарий от anonymous

2Виндузятник

Слышал от человека (в соседней комнате)
который непосредственно работает совместно с ЦЕРН
и проводит расчеты на их ПО.

Bear

anonymous
()

Последняя редакция теста с minv

$ uname -mrsp
CYGWIN_NT-5.0 1.3.6(0.47/3/2) i686 unknown

$ gcc --version
2.95.3-4

$ gcc test.c -O2 -Wall -Wno-unused -funroll-loops -fstrength-reduce -fomit-frame-pointer -ffast-math -malign-functions=4 -malign-jumps=4 -malign-loops=4 -o test

$ time ./test
time = 7 seconds

real 0m7.300s
user 0m7.200s
sys 0m0.010s

CPU: Intel P4 1.6GHz
MB: х.з., нечто на i850 c RIMM'ами
ОС: Windows 2000 Pro + cygwin

Вопрос: почему у всех атлонов НАСТОЛЬКО хуже результат?

anonymous
()
Ответ на: комментарий от Antichrist

линк дай

Блин, Antichrist, дай линк на Джойнера. С удовольствием почитаю если на русском языке. Все-таки аналитика это не маны, ее лучше по русски. А то на Lib.ru и в bolero ничего такого нет, я яндекс других Джойнеров находит. Кстати кто-то разрабатывает язык D как другое (не с++) развитие языка С. Я немного почитал - так это вроде существенно разумнее. Cам я сейчас на php пишу. Хотя и на С и на С++ писал в свое время. Но я уверенно могу сказать, что разработать большой проект на С ничуть не сложнее чем на C++. Точно. Ядро линукса не маленький проект - там без плюсов. Любая ООП парадигма спокойно реализуется и на чистых С. С совсем небольшим увеличением исходника, а вот читабельность С по любому выше с++.

avryabov
()

DURON 700 pc100 256М
gcc 2.95.3
gcc -O3 -ffast-math 31 сек
gcc -O9 --fast-math -malign... ..-mcpu=pentuimpro 21сек
PENTUIMIII 450 pc100 256М
gcc 39 сек 26 сек

напоминаю
препроцессор->собственно компилер->асм->link
gcc: cc1 as ld
g++: cc1plus as ld

Best regards Ilnur

P.S. кажется я начинаю думать что AMD не так уж хорош

ilnurik
()

   >>микрософтовсие не смотрел - абсолютно не интересуют
   Зря.. MS VC++ очень хороший компилятор...

   ifconfig (*) (2002-04-26 17:29:21.32)
Так и запишем - С++ ты тоже не знаешь.

anonymous
()

2 Bear anonymous (*) (2002-04-27 12:35:17.745)

Так все-таки результаты от этого действа положительные, отрицательные, или одно из трех? :)

Виндузятник

anonymous
()

2All:

Кому-ниюудь удалось откомпилировать код, присланный AC?
Сначала я думал, что это я не прав и не правильно скопировал, оказалось нет.

anonymous
()

Всё хотел удержаться - не смог.

2Antichrist: ты, скорее всего, не только не имеешь понятия, как работают поисковые движки, но и даже не представляешь, что в их функции входит. Начитался, максимум, индексаторов вроде ht://Dig и udmsearch на ночь. А гугловцы - да, ламаки позорные, можно предположить. Только где же твой, не C++`овый движок? Представь, пожалуйста, на суд публики, оценим.

Я так понял, что ты такой же хакер, как хакеры из 1й части книжки, на которую недавно ссылка была. Я сам одно время таким был... Но время поправило жизненные приоритеты и я стал думать иначе.

Прошу тебя, если ты действительно считаешь, что C++ для своих целей неэффективен, укажи какой язык эффективнее на реальных примерах (за которые разработчикам/кодерам выплачивались реальные деньги)? Проекты на C++ я вижу в большом количестве. Также, как, например, вижу преобладание PHP-проектов над Perl (в фронтендах, по крайней мере) и ещё большее преобладание - ASP над PHP. Причём, как правило, это - наиболее успешные коммерчески проекты...

Allter
()
Ответ на: комментарий от anonymous

>Так все-таки результаты от этого действа положительные, >отрицательные, или одно из трех? :) 

2Виндузятник

Я попробую узнать, что смогу. Будут новости - сообщу.

Но очевидно, что быстро такой процесс пройти не может.
очень много действующих физиков, которые владеют
только Фортраном. Физики среднего возраста уже не 
хотят переучиваться на С/C++. 
Очевидно переход происходит 
"путем вымирания сторонников старой теории".

Но как мне сказали новое ПО пишется преимущественно 
на C/C++. Конечно я не могу утверждать все это 
абсолютно, так как сам в процессе не учавствую.

Думаю, что причины, побудившие меня самого перейти на
C/C++ слишком понятны любому, кто пробовал написать 
программу не просто просчитывающую какой либо процесс
или решающую уравнение или систему,
но удобную для изменеия и применения к изменившимся
начальным данным, материалам, сложному окружению.
Потери скорости при счете в этих случаях в каждом 
цикле минимальны( если постараться,
а если нужно их вообще можно избежать ),
а получение результатов для совокупности условий 
и для преведения анализа - выше, причем иногда на порядки.

Я не говорю о других преимуществах, которых хоть отбавляй.
Ясно, что C/C++ программера ограничивает только его 
знания и матерство. Любой другой язык ( о которых я знаю ;-0))
рано или поздно начинает бесить своей ограниченностью.

Bear.

anonymous
()

Еще бенчмарков

Первый тест:

icc(win): 28 seconds
mingw(gcc2,win) 37 seconds
gcc3(freebsd) 24 seconds
gcc2(freebsd) 34 seconds


Тест АС у меня откомпилить не удалось, по этому я взял из той же mtl test/src
файл matrix_iterator_test.cc, добавил подсчет времени, откомпилил
и запускал с параматрами 4000 4000 10 10
Вот, что получилось:
ICC: 4.34
GCC3.1: 6.93
GCC2.95.3: 8.02

Any comments?

anonymous
()

2anonymous (*) (2002-04-27 11:01:33.371)

очередной дебил перепутал байткодовый компилятор окамла и нативный

$ time fib 40
165580141
fib 40  11,93s user 0,00s system 89% cpu 13,335 total

$ time fib.ocaml 40
165580141
fib.ocaml 40  6,66s user 0,01s system 95% cpu 6,978 total

$ time fib.ocaml.bytecode 40
165580141
fib.ocaml.byte 40  41,88s user 0,00s system 96% cpu 43,510 total

Байткоду и положено тормозить.
ocaml-3.04
gcc version 2.95.3 (-O3 -march=pentiumpro)
PIII-550/128
--
aef

anonymous
()

>Также, как, например, вижу преобладание PHP-проектов над Perl (в >фронтендах, по крайней мере) и ещё большее преобладание - ASP над PHP. >Причём, как правило, это - наиболее успешные коммерчески проекты...

Баловство это а не проекты
http://www.paulgraham.com/paulgraham/avg.html
--
aef

anonymous
()

Allter (*) (2002-04-27 13:56:37.736)

PHP - это поделка, на которой пишут все кому не лень. На Perl делают серьезные проекты, но часто от Perl'a отказываются из-за его скорости. ASP наверное пользуются ламаки пишущие на VB.

anonymous
()

2anonymous (*) (2002-04-27 14:17:25.863):

OK. Если я не прав, то ты бы хоть написал, чем компилировать надо... А?

anonymous
()
Ответ на: комментарий от Allter

2Allter:

Преобладание одного продукта над другим в бизнес-среде практически ничего не говорит о преимуществах и недостатках этих продуктов. ;)

Тут слишком много решает политика партии в лице менеджеров.

anonymous
()

2anonymous (*) (2002-04-27 14:23:23.221) А я ничего и не говорю. Возможно, поделка. А то, что пишут все кому не лень означает одно: малую стоимость кодеров. То же самое и про "ламеров на VB".

Кстати, по поводу серьёзных проектов: я тоже это заметил. Однако, как правило, большая часть таких сайтов - выполнена на том же PHP/ASP, а то и в plain HTML, а на Perl - разные функционально-законченные скриптики, вероятность возникновения нужды изменить которые в будущем довольно мала. Причём несколько раз я встречал конструкцию типа .../extern.php?path=траляля/search.pl, а также сам реализовывал вызовы внешних Perl-скриптов из PHP-шного фронтенда, с последующим парсингом возвращаемых им данных и выводом средствами наработаной библиотеки классов.

Когда говорим о теме "язык1 vs. язык2", даже в контексте определённого круга задач, важно учитывать экономическую выгодность реальных проектов, которые эти языки применяют для своих нужд.

Allter
()

Кстати

специально для горе-оптимизаторов ;)

Никто не хочет переписать тест с обращением матрицы на асме для своего любимого процессора (можно даже чем-нить типа VTune пользоватся) и посмотреть, насколько он ускорится? ;)

Затраты своего времени на оптимизацию тоже сюда киньте.

anonymous
()

2anonymous (*) (2002-04-27 14:32:17.231)

Дык правильно, какой менеджер будет использовать супер-пупер идеологически правильный язык, если кодеры/разработчики для него получают по $500/час %-) Или, что ещё хуже, есть кодеры/разработчики, готовые работать бесплатно, но если попытаться найти на рынке разработчиков, которые смогут потом поменять что-то, то их дешевле чем по $2000/час найти не получится.. %-)

Allter
()

ИМХО он не особо и был нужен -- а то что отсасывал в чем то -- да -- но в чем и выигрывал -- нельзя говоритьо том что один компиль круче другого -- все по мере надобности -- меня вполне пока что и gcc 2.95 из слэка 8.0 устраивает )

zmey_fm
()

Э , народ ваш С/С++/Java отстой - Паскаль рулеЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ!

anonymous
()

2gns:

А чем не угодил SmallEiffel? Вполне себе фришный, и не многим хуже коммерческих реализаций (говорю со слов тех, кто пробовал и то и то, сам я только SmallEiffel и юзал).

Функциональщина на самом деле может компиляться крайне эффективно, чему тот же OCaml (компилит в нейтив), Erlang или Clean - живое подтверждение. На тех задачах, с которыми я часто имел дело, функциональщина заменяет императивные языки в 90% случаев. Я даже числодробильню (при чём серьёзную - минимизация жуткой функции по до попы параметрам) на OCaml в некоторых случаях пишу.

Smalltalk - не умер. По количеству legacy кода он второй после КОБОЛа, при чём, в отличии от КОБОЛа, на нём пишут и до сих пор.

Про переучивание и про функциональный стиль мышления - я считаю, что это ОБЯЗАТЕЛЬНО для каждого, пусть даже он потом всю оставшуюся жизнь на Паскале кодить будет. Потому как это математическая основа всей компутерной науки. Это гораздо лучше, чем императивная каша в голове. Так что как минимум два функциональных и один логический язык должен знать просто каждый, желающий называть себя программистом. Потом и на императивщине код значительно чище будет.

2anonymous 2002-04-27 01:28:26.002:

В Fortran90 есть как минимум модули. В общем, много фишек, которыми можно заменить всякие там грязные хаки с common-блоками...

2bugfixer:

Ты грязно схалявил - явно по непомерной безграмотности. Ты воспользовался готовой функцией sort, я же привёл РЕАЛИЗАЦИЮ алгоритма quick sort. Если не понимаешь разницы - место тебе не тут, а на http://www.crank.net/

2anonymous 2002-04-27 08:48:41.309:

странно, вроде бы тут всех ламеров уже разогнали, однако вот и новые подползли. Ещё одному приглючилось сравнение Цэ и ЦэПэПэ. Ну а пассаж про крутизну MSVS - это вообще традиционная ламерская заморочка. Уже даже не смешно комментировать. Ногами надо бить, а не комментировать. Если ты, глупец малограмотный, не понимаешь, насколько тот же vim или xemacs эффективнее багландячьих и мелкомягких поделий - то тебе туда же, на crank.net. Найдёшь компанию себе подобных.

Про числа Фибоначчи и OCaml - требую примера. OCaml, в отличии от C++, хвостовую рекурсию в циклы раскрывает. Кроме того, если кому интересно, могу кинуть примерчик, как наивная тупая реализация вычисления чисел Фибоначчи на ML была АВТОМАТИЧЕСКИ приведена к корректному, в сотни раз более шустрому O(1) алгоритму. С такими неформализуемыми, не математическими языками как C++ это не прокатило бы.

2Bear:

Функционально на C++ писать всё же нельзя. Так же, насколько мне известно, провалились все попытки изобразить что либо приличное на тему агентов. Всякие там Java и Objective C - без проблем, а на C++ - попа....

Про "даже CERN переводит на плюсы" - так это всё благодаря упорству тов. Рене Брюна. Я уже устал пересказывать рассказку о том, как online-обработку эксперимента на CERNlib-е пишут, а потом на ROOT переносят ТОЛЬКО ДЛЯ ОТЧЁТНОСТИ - потому как ROOT-овый вариант нагрузку в принципе не держит. Даже если напрочь всю интерпретацию повышибать.

Java - относительно неплохо сконструированный почти чисто ООПный язык. Ближе всего он к MODULA2, а не к C++. Только вот все недопрограммисты смотрят на синтаксис, а не на семантику, отсюда и непонятки у них...

2avryabov: надо гуглей искать. Я не помню, где брал, а в самом тексте писано, что рекомендовано к свободному распространению и выкладыванию куда попало. А, ладно, сам тогда и выложу, не жалко:

http://ontil.ihep.su/~vsl/joyner.pdf

Ну и на закуску, раз уж начал выкладывать:

http://ontil.ihep.su/~vsl/HBKJ.ps

http://ontil.ihep.su/~vsl/MH96Paper.ps

http://ontil.ihep.su/~vsl/ocaml-ora-book.pdf

Antichrist
()

2Allter: что я читал про поисковые движки (и другим советую) -

"OASIS: Distributed Search System in the Internet", edited by A. Patel et al, St.Petersburg 1999

И это только начало. В этой области копать и копать. И копать явно придётся в сторону специализированного языка, под поисковики заточенного.

2Bear про переход преимущественно на C++ - а Numeric Python в FNAL не хочешь? Народ там это весьма даже юзает.

Про ограниченность других языков - это, пожалуй, ты ограниченый. Маловато языков знаешь, если для тебя C/C++ - "неограниченные"...

Antichrist
()

2(Antichrist) Чо не вотру , так это откуда некоторые знают все обо всем...

anonymous
()

А TenDRA - что за компилер?

anonymous
()

antichrist, dva .ps ne kachayutsya: 403 Forbidden :(

anonymous
()
Ответ на: комментарий от Antichrist

> Про "даже CERN переводит на плюсы" - так это всё благодаря упорству тов. Рене Брюна.

Да, мужик достойный :) С Фонсом на пару :))

> Я уже устал пересказывать рассказку о том, как online-обработку эксперимента на CERNlib-е пишут, а потом на ROOT переносят ТОЛЬКО ДЛЯ ОТЧЁТНОСТИ - потому как ROOT-овый вариант нагрузку в принципе не держит.

Да, еще расскажи. Мы вот у себя уж год как CERNlib на ROOT ушли. И по всем параметрам - скорость/надежность/размеры конечных архивов - имеем заметное улучшение. Безо всяких "но". Просто лучше.

anonymous
()
Ответ на: комментарий от Antichrist

>Когда я говорю "фортран", я имею в виду Fortran90 и HPF, со всеми этими >вкусностями про матрицы и вектора и автоматическим разпараллеливанием. >Факт - ни одна C++-ная библиотека даже близко не подобралась к >производительности своих Фортрановских аналогов. 

Ну библиотеки это дело наживное - а автоматичекское рпспаралеливание 
есть и в C/C++ "Насчет близко не подобралась к производительности Фортрановских аналогов" - по опыту очень даже подбирались (но не обогнали)

разница на _реальных_ задачах 0-15% и именно с распараллеливанием (OpenMP)


/SS

anonymous
()

Э.Чобан, знаю слышал и даже видел. А П.А.Масличенко (перхлорат амония), знаком?

anonymous
()

to Antichrist

qsort: qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x]

- это по твоему быстрая сортировка (аналогичная qsort в C) ??
Списки по алгоритму Хоара не отсортируешь. То что ты написал -
больше смахивает на "пузырьковую сортировку". Представь на
этом же языке сортировку массива по алгоритму быстрой сортировки
Хоара и почувствуй разницу с C.

JNZ

anonymous
()

Вопрос к Луговскому

Как ты относишься к Inferno и Limbo?

anonymous
()

Test

bash-2.05$ gcc test.c -o test.elf -O9 --fast-math -mcpu=athlon bash-2.05$ time ./test.elf time = 30 seconds

real 0m29.786s user 0m29.570s sys 0m0.010s bash-2.05$ gcc test.c -o test.elf -O9 --fast-math -mcpu=i486 bash-2.05$ time ./test.elf time = 25 seconds

real 0m24.821s user 0m24.820s sys 0m0.000s

lvm
()

Test

Duron-800, 256-PC133, GCC-2.96-99

bash-2.05$ gcc test.c -o test.elf -O9 --fast-math -mcpu=athlon bash-2.05$ time ./test.elf time = 30 seconds

real 0m29.786s user 0m29.570s sys 0m0.010s bash-2.05$ gcc test.c -o test.elf -O9 --fast-math -mcpu=i486 bash-2.05$ time ./test.elf time = 25 seconds

real 0m24.821s user 0m24.820s sys 0m0.000s

Я теперь буду компилять под четверку.

lvm
()
Ответ на: комментарий от anonymous

>CPU: Intel P4 1.6GHz
>MB: х.з., нечто на i850 c RIMM'ами
>ОС: Windows 2000 Pro + cygwin

>Вопрос: почему у всех атлонов НАСТОЛЬКО хуже результат?

Ответ: потому что сей тест заточен более на скорость памяти 
а не процессора ...

/SS


anonymous
()
Ответ на: комментарий от anonymous

Не тупи. Это именно Хоар. Разобрать алгоритм по буквам, или всё же сам поймёшь?

Для приколу то же самое на OCaml:

let rec qsort = function | [] -> [] | h::t -> qsort(filter((>) h) t) @ [h] @ qsort(filter((<=) h) t)

Теперь понятнее?

Antichrist
()

po povodu http://www.rsdn.ru/article/?devtools/perftest.xml

voobsche glupost' velikaya... odna "pustaya" funkciya chego stOit

hoteli merit' tak i merili-by long long t0,t1; void f(bla-bla){ rdtscll(t1); ... }

int main(void) { rdtscll(t0); f(bla-bla); ... }

kotoriy raz tam erundu pechatayut a potom vsyakie ogr'y na nee ssylayutsya...

anonymous
()

po povodu http://www.rsdn.ru/article/?devtools/perftest.xml

voobsche glupost' velikaya... odna "pustaya" funkciya chego stOit

hoteli merit' tak i merili-by po chelovecheski.
long long t0,t1;
void f(bla-bla){
rdtscll(t1);
...
}

int main(void) {
rdtscll(t0);
f(bla-bla);
...
}

kotoriy raz tam erundu pechatayut a potom vsyakie ogr'y na nee
ssylayutsya...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.