- 1
- 2
- 3
- 4
- 5
- 6
- 7
#include <iostream>
using namespace std;
int main() {
for(int i = 0; i<((cout<<'c'), 5); ((cout<<'i'), ++i)) cout<<"b";
cout<<endl;
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+21
#include <iostream>
using namespace std;
int main() {
for(int i = 0; i<((cout<<'c'), 5); ((cout<<'i'), ++i)) cout<<"b";
cout<<endl;
return 0;
}
38 летний программист справа написал зачем-то такой код и сказал, что проверяет себя.
http://ideone.com/zg6SFB
А проверял он порядок вызовов фрагментов фора (условие-тело-инкремент)?
http://ideone.com/sEL1h8
Наглядный пример - паскальпитух сделал 25-ю строчками то, что на сишке делается за 1, с функциями как у тебя - за 5-6.
Так же, добавить функции - это 2 строки(одна) на функции - их у тебя 3 - посчитай.
Паскалевский фор начальное и конечное значение счётчика вычисляет только один раз и сохраняет в регистрах. Для реализации такого же функционала в сишечке придётся заводить временные переменные и копировать начальное и конечное значения в них. Ага, паскалевское придётся переписывать в Чтобы не было потери перфоманса, придётся питушиному компилятору указывать директивы, чтобы он разместил sv и ev в регистрах. Я уже не говорю, что код будет выглядеть, как говно.
Преобразование поциента for -> do крайне доставило, ибо сделало цикл некорректным, т.к. условие не проверяется перед входом в цикл.
Пустые списки и пустые строки в функции передают только анскильные питушки. Царь проверяет инварианты заранее, при вводе, а затем не нарушает их. Поэтому в его случае такое преобразование правомочно.
А вдруг он написал валидаторы для типичных случаев, и для проверки ввода достаточно поюзать уже готовый валидатор?
Код сам следит за выравниванием, ибо если бы люди писали как ты, животное, - ты бы даже киношку не осилил поглядеть. Но ты, анскильный питух, лучше всех всё знаешь и несёшь такую херню. Это просто 5фейспалмов в секунду.
Ты, тупое животное, ты нихрена не знаешь о перфомансе. Ты не хрена не знаешь о логике - ты тупая питушара. Кукарекаешь о не корректности, но питух не осилит написать даже мемкопи нормально - но он кукарекает.
Питух, а теперь объясни мне, ущербанище упоротое, зачем мне вызывать мемкопи для ПУСТОТЫ? А, ты реально слишком туп чтобы это понять, либо притворяешься? Мб мне там тебе надо выравнивание сделать, а то авось питух типат ебя передаст туда не выравненное.
Или ты, питух анскильный, думаешь, что мне проверять - авось и конец не выровнен, авось блин там 123байте сегфолт? Не смиши мои тапки и не неси херню, животное.
Какой нахрен переменного размера? Ты что несёшь? Это ссешное копирование - там 16байтные типы.
Обрабатываемые блоки всегда минимум 16байт и всегда кратны 16байтам. Никакие проверки делать не надо, глупая лалка.
Возьми картиночку/кинцо - посчитай сколько там пикселей и раздели на 16. Подумай, почему про-пацаны делают сетку по степеням двойки и т.п.
Почему, когда у тебя есть выровненый массив в 183748734 байт - пацаны срезают первы 4бита и скамливают это ссешке, а потом уже обрезанные 4бита - хреначат как угодно.
Ты не думал, что ты, как и все тут - тотальные анскильности, которые нихрена не понимают как надо писать код?
Хотя да, тыж анскильное животное - куда тебе думать и знать как работает мемкопи. И почему она проверяет, почему убивает в говно кеш, почему тормазит и прочее - ты животное, и твой удел лишь кукарекать.
Я называю вас питухами только потому, что вы: а) нихрена не понимание, не умеете и несёте херню. И это даже не самое страшное - вы нихрена не делаете выводов - вы думаете, что слиться и попитросянить - схавитить плюсов и свести разговор к ха-ха делает вам чести - но только по этому вы питухи. б) Вы слишком анскильны и не доросли ещё до уровня своей наглости.
Что, Stertor?
:-D
Надоели люди, которые "пошел на хуй" называют троллингом. Он не троллит, он абсолютно искренне хочет, чтобы ты пошел нахуй.
anonimb84a2f6fd141 , а не пошел бы ты на хуй?
"Мне всегда немного грустно, когда красноречиво, изящно и тонко оскорбляешь человека, а он слишком глуп, чтобы это понять ..." Сделайте выводы для себя, или по крайней мере перестаньте "кормить троллей" - поддаваться на провокации.
> for(i = sv; i <= ev; i++)
Ну и в С99 я бы написал так
Ты чего абкурился, анскильность тотальная? Какие директивны, какие регистры - ты не путай Си-конпеляторы(нормальные) и твоё паскаль говно.
>int sv = StartValue(...), ev = EndValue(...);
Ой питух, ой анскиллед. i = StartValue(...) - работает как в твоём паскале. ev ты тоже можешь заменить на EndValue(...), если твоя EndValue() не говно.
Зачем ты несёшь такую херню? Ты нихрена не знаешь про Си конпеляторы, но кукарекаешь.
Если hbound() имеет побочный эффект (например, читает из внешнего источника), то результаты выполнения будут разными.
Тыж раньше кукарекал, что:
>придётся переписывать в
>int sv = StartValue(...), ev = EndValue(...); i = sv;
Почему ты, питух, сразу не написал i = StartValue(...);
>есть разница: в первом случае hbound() вызовется один раз, а во втором будет вызываться на каждой итерации цикла. Если ты не понимаешь разницы, то ты питух анскильный.
Животное, если ты осилишь атрибуты у функций, если ты осилишь мозг - то ты питух не будешь нести херню.
>Если hbound() имеет побочный эффект (например, читает из внешнего источника), то результаты выполнения будут разными.
Т.е. твоя hbound() говно? Ну и, куда она читает? Зачем она читает? Почему её надо тут юзать?
Т.е. это не работает для 10% функций, у которых есть побочный эффект, а для остальных работает - ещё раз питушок прокукарекался.
Расскажу тебе одну вещь, котору ты пока, в силу своей малоразвитости, понять не можешь - функции с побочным эффектом в сишке никто не пишет так, как ты это написал. Ибо она бессмысленна.
Признаю, здесь я поторопился.
> функции с побочным эффектом в сишке никто не пишет так, как ты это написал
А как пишут? Функция может брать данные откуда угодно и они могут меняться между вызовами. Я уже не говорю о том, что вызов функции на каждой итерации — это потеря производительности (даже если функцию заинлайнить).
Ты нихрена не знаешь о производительности - не кукарекай.
Понимаешь в чём дело - в нормальном коде ничто не может само меняться. Что будут менять твои побочные эффекты? Это сиколы? Хотя куда вам. Либо какие-нибудь глобальные переменны? Тогда в чём смысл?
Ты заюзал f() - которое вернула тебе, допустим, длинну строки - по твоей же логике она имеет побочный эффект и меня эту же строку, либо эту строку меняет что-то из вне. Тогда твой цикл не корректен.
Если возвращаемое значение будет всегда константное на время выполнения твоего цикла - то хреначить в функцию побочные эффекты глупо.
Допустим у тебя есть независимо пополняемый пулл, который ты обрабатываешь и по твоей логике Сишный фор работает не правильно - юзай вычислялку длинны так:
for(char * p = str; p != strlen_p(str); ++p); - будет работать так же, как твой паскаль.
Ты накостылил какое-то говно, надеясь на разумность компилятора, это вместо того, чтобы закешировать значение самому, вот жеж ты анскилдед.
Какую разумность - это не разумность, путих, - это семантика атрибута.
Хотя я понимаю, анскильному животному, который кроме делфей в жизни нихрена не видел - сложно понять как работает си-конпелятор.
Ты питух несёшь тотальную херню, хотя тыж нормального кода в жизни не писал - откуда тебе знать зачем пацаны придумали атрибуты. От жешь ведь.
Твой код работает так же, как обычный while. А аналог паскалевского кода будет
Не так же, простоты ты слишком туп, чтобы это понять.
Был бы ты не тупым животным, и понял бы, что c99 игнорит атрибуты, которых нет в с99. И осилил бы -std=gnu11 - ты был бы не питухом, а так - ты бездарное животное, которые нихрена не понимает и кукарекает.
но ты все же бот
настоящий суп-и-харчиллер первым же своим вбросом демонстрировал бинд в сишке
Мой бинд имел смысл, был крут и как-то соотносился с контекстом треда, а ты же питух наваял говное, смысла в котором нет.
42 раза написать тебе, что ты питушок
это самые полезные 5 строк кода, которые я сегодня написал!
Она напишет больше 42раз, но тыж питух только кукарекать можешь.
Может больше, может меньше, зависит от lbound().
// Но результатом выполнения всего выражения является результат выполнения последнего подвыражения :)
Запомни раз и навсегда - пока я тут царь, и лучше меня тут никто и ничто не напишет.
Простой код - это минималистичный, конкретный, красивый код. Код питушков, типа тебя - это избыточное говно, основанное на ущербанских абстракциях. Питушки типа тебя ваяют избыточное говно, делая 200строчками то, что пацан делает 20-ю - длинна строк одинаковая.
Вот как ты, питух, будешь писать цикл на 10итераций? for(uint64_t i = 0; i != 10; ++i) {}; - в лучшем случае, обычно питушня типа тебя даже ++i не осиливает написать, а уж !=(<) для вас вообще нереально. Питухи всегда юзают <=. uint64_t i = 10; do {} while(--i);
Как питух, типа тебя, захреначит обход "массивов" - как питух, через форы, массивы со скобочками, счётчиками. А уж если массив 2д, то питушки ваяют такое говно, что просто пичаль.
Вот как питух, типа тебя, напишет сложение одногого массива с другим - правильно, как питух, а пацан напишет как-то так:
Правда пацаны даже N не юзают, а юзает end, как вас, питухов, пытается приучить стл, но вы же тупые питухи. До сих пор у питухов везде счётчики на циклах, даже в стл.
Ты тотальная, жалкая анскильность, которая оправдываёт свою криволапость и маломозглость подменой понятий.
Сложные конструкции - они сложны синтаксически, а логически они просты - вы же питухи пытаетесь юзать примитивные синтаксические конструкции, которые абсалютно не логичны, но анскильным питухам класть на логику.
Реально? Нука, давай конкретные примеры. Это анрольная sseшка, которая запидалит тебя в хлам, даже если твой конпелятор соизволит засимдить твоё выхлоп.
В каком месте он не кроссплатформенный? Замени uint64_t на fast тип, если пишешь для 32битного говна. Для маздайки никакой вменяемый человек не пишет, ибо маздайка и перфоманс, предсказуемость, масштабируемость не совместимые понятия.
Нормальный код не пишут для 32битного говна - максимум какие-то либы для прикладухи.
Ты обыкновенный питух, который слился на ровном метсе и начал кукарекать "преждевременной оптимизации", хотя эта с оптимизацией занимает строчек и символов меньше, чем твой говнокод. "не кроссплатформенный" - это в чём выражается? Тут ничего "не кроссплатформенного" нет, если ты имеешь ввиду софтварную платформу, если ты про аппаратную, то удивлю тебя, питух. Быстрые вещи пишут отдельно под каждый таргет.
>Вот ты тут всех критикуешь, какие все тупые
Объективно - ты туп, твой код говно.
>бредовые примеры
А ну да, бредовый пример - обход массивов. Самая частая операция - для питуха бредовый пример.
Кто? Я напомню тебе - я царь. Как ты понимаешь моего скилла разговора и аргументации хватит на паралельное сливание сотен лалок, типа тебя. Такие питушки как ты психуют через 5минут разговора со мной и в страхе убигаю, предпочитая потом со мной даже не встречаться.
>наверняка даже девушки нет
Сказал питух, у которого даже намёка на девушку нет. Как я люблю этих питушков, которые явно сливаются выкладывая все свои проблемы как аргументы.
Питушок, я с 17 лет и до сих пор живу со своей женой.
>вот ты тут и отрываешься.
Зачем мне тут отыгрываться? На ком? Ты думаешь мне интересно с тобой говорить? Я абсалютно клал на дебилушек, типа вас. Я написал своё мнение о коде - ты мог пройти мимо, но ты же сам начал со мной спорить? А я не плюблю, когда анскильные питухи позволяют себе даже в мою сторону смотреть.
Вобщем ответов нет, тотальный слив в питушок стайле. Аргументы на уровне детсада: "тебя никто не любит - ты поэтому меня не любишь".
U say!
>> Питушок, я с 17 лет и до сих пор живу со своей женой.
Ты сделал мой день. Это ты в следующем году решил завести жену или первый день женат?
Ты так говоришь, как-будто это что-то плохое.
Да, в Си for(x; y; z){тело} эквивалентно x; while(y){тело; z} Но зачем, ведь for в данном случае и читается хуже, и менее гибкий?
Си позволяет писать всё, а другие языки не позволяют писать ничего.
Пропацаны фор не юзают. x; while(y){тело; z} - так пишут только питухи. Фор в твоём случае читается хуже, а в моём лучше.
Зачем ты мне рассказываешь про бесполезность фора? Ты рассказывай это другим питушкам.
Что я разговариваю с заедушным питушком, который даже банальный перебор массива нормально не напишет - твой удел ваять гуйню за еду, вот вояй, но не спорь со мной.
можно подумать, что скобки не составляют одно целое с кодом. А по качеству кода ценится программист.
cpp, загляни сюда
xyecoc.net
Эдвард Сноуден
Представители ФСБ
(trollface)
Stertor,
не перестанете флудить - получите бан. Последнее китайское!!
Модератор.
Аккаунт заблокирован до 04.01.2080
Причина: тролль
1k$? Не смеши мои тапки.
>пока ты сидишь на шее родителей.
Живу сам по себе с 17лет, да и вообще какая тебе разница? Я конкретно описал тебе - почему твйо код говно, а ты начинаешь сливаться на родителей.
>Я все еще очень жду когда же ты покажешь нам хотя бы какой-нибудь из своих проектов (которых наверняка нет).
Я уже показал тут и на лоре достаточно материала для оценки моего уровня - писать изимодное говно за еду мне не интересно. То, что я делаю - в твоём понимании не проекты.
>По твоему стиль написания скобок определяет качество программиста?
Да, только анскильное животное тратит 2лишние строчки без профита. Тыж там говорил - зачем юзать то, что не приносит профита - вот тебе пример твоего узкого и примитивного мышление.
>Скажи это Crytek (которые ставят скобки с новой строки) например, хотя да, они же тоже питухи, куда им до тебя.
Питух - ты видел хоть раз в жизни ядро их движка? Движки состоят из 95% обвеса, которые пишут животные типа тебя, а работают другие 5% - это ядро, которое питуш более-менее норм пацаны, которое вы никогда не видите и судите по обёрткам.
Хотя да, безвольные питухи пишут так, как им сказали. Поэтому приводить изимодное говно как пример - глупо.
Ну зачем ты раскрыл все карты? Я только хотел прослыть провидцем.
>То, что я в следующем году женюсь и ухожу из дома.
Пиздитите батенька 146%
петлю в простанственно-временном континууме
Тут борманд, который хотябы знает сишку и околосистемщину, являясь обычным питушком, ибо любит красоваться на публике. Его суждения бредовы и тупы.
Больше тут никого, кроме бездарных плюсовых, заедушных питухов нет.
Я не делаю никакие проекты - я реализую нормально те вещи, которые мне интересны. http://www.linux.org.ru/forum/development/9250769/ - кури, я там описывал "как стать прокодером".
Я уже говорил, что я делаю - я пишу идеальные обходы для 4-32мегабайтных 2д массивов, которые обходить надо тысячи раз, причем обходит отдельные части нельзя - только весь целиком. Для того, чтобы слить питухов-математиков. Последние 2недели я убил на сбор инфы о процессорах, ибо для запила идеала - мне нужен подходящий проц. Мой старый штеуд не имеет нужных мне фич. Я решил слинять на амд, но в интернетах нету вменяемых бенчей - благо братуха и лор помогли.
Для справки - бульдозер в одной нити на чтении памяти сливает i7 в 2(1.7) раза в зависимости от прфетча, nt чтения и прочего.
Вот теперь мне надо дожаться когда мне прийдут мои железки, и потом пилить дальше.
И самое смешное знаешь что? Написание даже банального идеального обхода того же массива сольёт у тебя тысячи времени, а питушок это даже вообще не осилит.
Вот теперь посчитай - осилить в иделе сишку. Осилить в идеале ОС. Осилить в идеале конпелятор. Осилить в идеале железо. Осилить в идеале вначале либо плис, либо схематехнику. Запилить идеальный процессор. Слить всех в мире не только софтварно, но и хардварно. Имея опыт в ЧПУ захреначить свой цех фотолитографии, либо сборки из елементов. И слить всех просто в говно.
Это требует для <1% человека лет 10 - посчитай на что ты потратишь время, на это, либо на заедушное накидывания кнопок на формочку.
1. Cкобки на новой строке 100% признак анскилледа.
А про код - пиши оптимальный код, будешь писать оптимальный код - будет писать проще, а простота основа труЪ кода.
И самое главное пойми, что плюсовик даже близко не сишник. Из 100% «сишников» на лоре, да и в мире 90% плюсовиков, а плюсовик тебя хорошему не научит.
И раз ты не собираешься продавать себя, то пойми одну вещь - никогда не пытайся потакать анскилледу. Думая «а что если дебилушка с кодегайдом головного мозга не поймёт мой if» - ты 95% напишешь гумно.
2. И да, с таким стилем только в гуйню, мылогонятели, либо ещё что-то.
Вменяемые люди привыкли не разбазариваться местом на экране, а так же всем остальным. Если ты клал на код - ты клал на всё, и тебе ничего не светит.
3. Ты хочешь батл?
Прокодер похож на автора, прокодер не программист - а просто школьник, хобби которого играть в программиста.
Это и есть описание "как стать прокодером"?
Плюсовик - животное. Тратят что-то бессмысленно только питухи, будь-то такты, строки, память и прочее. Писать код, не думая об анскилледах. Там ещё штук 5 основных правил, которые тыпроигнорил.
>А надо, очевидно, писать бесполезные обходы 32-х мегабайтных массивов. Кстати, разве на GPU не будет быстрее?
Бесполезные? Ты глупышка, даже не знаешь, что такое гпу и кукарекаешь. На гпу будут те же проблемы, что и на цпу.
Единственный профит от гпу - это быстрая память. Но есть проблемка со сбросом промежуточных результатов. Поэтому да, можно - но суть в цпушных горематематиках.
Они там что, между строк?
>Поэтому да, можно - но суть в цпушных горематематиках.
Если на гпу можно, то писать это на цпу - анскильное питушарство, разве нет?
но вот с этим:
>прокодер не программист - а просто школьник, хобби которого играть в программиста.
я согласен, поэтому прокодер с его желанием всех слить написав никому не нужный обход массива - не нужен.
Они там на строках.
>Если на гпу можно, то писать это на цпу - анскильное питушарство, разве нет?
Будет не особо быстрее и нахрен не упало.
>я согласен, поэтому прокодер с его желанием всех слить написав никому не нужный обход массива - не нужен.
Никому не нужный. Глупый питошок.
Ты что же это, такты не экономишь?
>Никому не нужный. Глупый питошок.
Он хоть многопоточный, этот перебор?
Питух, иди кукарекай в другое место.
>Он хоть многопоточный, этот перебор?
Питушок даже не знает особенности железа - ой жалкая питушня. Иди погугли чтоли, а то прочитал в википедии "многопоточный" и кукарекаешь.
На 2-хканальных штеудах профита от юза больше 2-х нитей нет. Профит есть только на 2011 и на амдеговне.
А на плисе - будет ещё быстрее, а закатать в кристал - будет ещё быстрее. Только суть в том, что это не надо, но вы же питушки нихрена не знаете о чем кукарекаете, но кукарекаете.
Причем тут гпу, питух? Оно не идеально ложится - ты прочитал это в другом комменте? МОлолец, питух, только ты несёшь полную херню.
Это не левый тест, питух анскильный - это nt запись с nta префетчем - самое быстрое, что может быть на на рядовом х86.
Ладно сливалка, ты мне всё ровно не ответишь.
Если в задаче боттлнек - доступ к памяти, то в чем смысл баттла - потестить кто быстрее умеет обращаться к памяти? Если вычисления тоже играют роль - многоядерный код будет быстрее, без разницы с какой скоростью процессор умеет читать и писать в память. Но нет, я думаю ты просто не умеешь ни писать на гпу, ни использовать многопоточность.
Некий платный переборщик паролей до сих пор не поддерживает многоядерность, про симд молчу. Байтоебы ебанулись вообще, как 10 лет назад писали, так и сейчас пишут.
Какие ядра - чиго ты там распаралелишь? Обращения к памяти? Зачем? Если овер 2 нити на штеуде не дают профита. Будешь питушить кеш чтением? Даже на сотне вёдер ты не выдашь даже 50% нормального мнонитеевого обхода.
Если ты запилишь нормальное чтение/запасиь памяти, не питуша кеш - у тебя в неё упрётся уже на одном ведре. Второе ведро тебе даст в районе 5%, остальные вёдра 0.
Ты выучил новое слово? Иди питушок хоть посчитай, что такое симд.
А ты знал, что симд быстрее памяти в десятки раз? Чтобы сложить 8флоатов - тебе надо прочитать из памяти 16 флоатов, а складутся они из за такт. Память работает со скорость 20гигов в секунду, а кешлайн 64байта - это 15тактов на кешлайн. Один avx мув - это 32байта - т.е. читает задержка на 1кешлайн в среднем 13тактов. Т.е. чтобы прочитать 8флатов из разных кешлайнов - тебе надо 26тактов - один из которых, предположим - ты будешь их скаладывать.
Что ты будешь делать остальные 25тактов? Вывод - ты нихрена не знаешь о симд.
Знаешь почему результаты синтетики отличаются от ширпотребного кода? Потомучто ширпотребный код говно. Нормальный код ведёт себя так же, как синтетика.
Знаешь почему тот же новомодный хасвелл быстрее коре2? Нет, глупышка. 90% его быстроты - это память, это скорость памяти и понтовость контроллера памяти. Код работает на i7 быстрее лишь потому, что память быстрее.
Любой код упирается в память, если он не говно.
На гпу будет не особо быстрее - там ещё скидывание результатов. Суть в том, что у матиков есть цпу - это задача помогает понять цпу, и гпу - ибо там теже самый проблемы с обходом. Ты анскильный питух, который этого не понимает - и начал кукарекать.
>Если в задаче боттлнек - доступ к памяти, то в чем смысл баттла - потестить кто быстрее умеет обращаться к памяти?
Да, в этом и суть - глупая лалка. Производительно процессора 40, либо 80гигафлопс на ведро. Производительность памяти 5гигафлопс. Ты понимаешь всю бредовость бреда, который ты несёшь?
На каждый прочитаный из памяти флоат - процессор может делать ещё чутьли не 10 операций, но ты же кукарекаешь.
>без разницы с какой скоростью процессор умеет читать и писать в память.
Ты животное понимаешь вообще что ты несёшь? Ты не понимаешь, почему на гпу совершенно иная память?
Имеет смысл что-то считать в нескольких нитях только тогда, когда ты упираешься в кеш, в остальных случаях - профита нет, кроме тех случаев когда у тебя лга2011 и иже с ним.
>Но нет, я думаю ты просто не умеешь ни писать на гпу, ни использовать многопоточность.
Что там уметь, питух? И что тут уметь, питух? На гпу написать это ещё проще. Нитей пихай хоть сколько - считай первый 2 ряда в 1-м нити, вторые во второй и так сколько угодно.
Ты очередно анскильный питух, который не понимает вообще того, что он несёт.
Ну, во всяком случае тот код ВК, который я видел, точно написал ты
Авотхуй. Поищи в гугле формулу зависимости производительности от количества процов и "распараллеливаемости" задачи. Формула Амдала, кажется, запамятовал название.
Так вот. Формула гласит, что даже если мы не упираемся в пропускную способность памяти, и всего десятая часть вычислений должна исполняться последовательно (т.к. зависит от предыдущих результатов), то хоть 200 процов, хоть 100500, хоть дохуялиард, больше чем в 10 раз ты ускорить вычисления не сможешь. Никак.
>Суть в том, что у матиков есть цпу - это задача помогает понять цпу, и гпу - ибо там теже самый проблемы с обходом.
А, ну т.е. это не реальная полезная задача, а питушиная обучающая? Ну так бы сразу и сказал.
Ты идиот или притворяешься? Какие нахрен 4 ядра, если одно ядро считает в 10раз читает и считает в 10раз быстрее, а 90% тактов процессор тупо простаивает и ничего не делает.
Ты предлогаешь считать это на 4ядра, хотя это уже на 1-м упирается память - чтобы это жрало в 4раза больше инергии. А чё, у нас же одно ведро выкидывает 90% тактов на ветер - пусть и остальные 3 выкинуть по 99% тактов на ветер - круто же.
>А, ну т.е. это не реальная полезная задача, а питушиная обучающая? Ну так бы сразу и сказал.
Это основа для всего. Так сичитается всё. Похоже строится и общитывется дискритизация любых процессов. Только добавляются множители и граничные условия.
Ты обычная анскильная кукарекалка, которая нихрена не понимает в том, о чём кукарекает. Я тебу уже это 10раз говорил и ещё раз скажу, питух. Не неси херню, питух. Иди почитай, питух.
Ещё раз повторю, тебе животное - 1ядро даст тебе 5% профита - ещё 2 ядра 0% профита - ты получишь 105% перфоманса одного ведра и 300% енергопотребления одного ведра.
Что ты будешь считать на своих остальных 3-х вёдрах?
Надо же, какой заботливый. А не все ли тебе равно, выкинет ядро такты на ветер от того что твоему потоку нечем его загрузить, или от того что ты ничем его не загрузил? И с каких пор в питушковых (не связанных с реальностью) задачах стали заботиться об энергопотреблении?
>Ты обычная анскильная кукарекалка, которая нихрена не понимает в том, о чём кукарекает. Я тебу уже это 10раз говорил и ещё раз скажу, питух. Не неси херню, питух. Иди почитай, питух.
А ты - школота которая не знает ни синуса, ни физики 7-го класса. Одним словом, "питух".
>Ещё раз повторю, тебе животное - 1ядро даст тебе 5% профита - ещё 2 ядра 0% профита - ты получишь 105% перфоманса одного ведра и 300% енергопотребления одного ведра.
А я еще раз повторю - гпу даст 400% профита (условно, тем более промежуточные результаты оттуда нет никакого смысла каждый шаг считывать, ты бы еще предложил их на винт сохранять), 2 ядра даст 5% (как ты сам признал). Т.е. если ты заботишься об эффективности - пишешь на гпу (или хотя бы масштабируемый код), если просто хочешь попонтоваться использованием процессора на 100% - задействуешь хотя бы второе ядро.
Мне похрен что такое синус, а также похрен на физику 7-го класса.
>А я еще раз повторю - гпу даст 400% профита (условно, тем более промежуточные результаты оттуда нет никакого смысла каждый шаг считывать, ты бы еще предложил их на винт сохранять)
Упоролся? Какие 400% профита. С чего-это не надо. В том и смысл, что надо. Ты будешь считать дифур не сбрасывая промежуточные результаты? Куллстори.
С чего ты, анскильный питушок, вообще кукарекаешь мне тут? Ты нихрена не знаешь ни про цпу, ни про гпу. Ты несёшь тотальную херню. Я уже тебе говорил - может мне мне взять здл и закатать это в кристалл? Быстрее ведь будет.
И да, животное - на цпу и на гпу это пишется одинакого.
Каждый шаг - результаты не нужны. А если даже нужны - смысл тогда твоих оптимизаций, если ты все равно после каждого шаг будешь копировать весь массив в область хранения?
>С чего ты, анскильный питушок, вообще кукарекаешь мне тут? Ты нихрена не знаешь ни про цпу, ни про гпу. Ты несёшь тотальную херню. Я уже тебе говорил - может мне мне взять здл и закатать это в кристалл? Быстрее ведь будет.
Быстрее. Но дороже. А на видеокарте - дешевле. Ну а заказывать себе процессор покруче вместо того чтоб осилить наконец гпу - так вообще идиотизм. Да и не знаешь про гпу именно ты. Ты кроме убогой сишки для х86\64 ничего не знаешь - ни физики, ни математики, ни структур данных.
>И да, животное - на цпу и на гпу это пишется одинакого.
Ну так если одинаково - что же сразу на гпу не пишешь.
Дак не каждый шанг. Каждый сотый, допустим, либо тысячный.
>Быстрее. Но дороже. А на видеокарте - дешевле. Ну а заказывать себе процессор покруче вместо того чтоб осилить наконец гпу - так вообще идиотизм. Да и не знаешь про гпу именно ты. Ты кроме убогой сишки для х86\64 ничего не знаешь - ни физики, ни математики, ни структур данных.
Стиль написания на гпу не отличается от моего стиля написания. Причем тут покруче - суть в том, что писать что-то на моей коре2 1.86 смысла нет.
Для меня дешевле купить хасвелл и запилить нормально. Если я и заплю это на гпу, то уже после того, как запилю это НОРМАЛЬНО на цпу. Тогда я смогу пацанам показать - вот цпу код, который идеален. А вот гпу код, который сливает хасвелл на карточке за те же 10-11к.
>Да и не знаешь про гпу именно ты.
Что именно? Удиви. Стиль написания там примитивный - захреначил мастрицу в память - натравил сотню-тысячу юнитов - нажал wait() - прошел - хреначишь следующий цикл.
>Ты кроме убогой сишки для х86\64 ничего не знаешь
Для? Вообще-то я знаю чистую сишку. Я знаю гну-сишку, которая работает на всех аппаратных платформах - на которых есть гцц. Я знаю и гас и гис. х86 популярная, ширпотребная архитектура. Есть более лучшие, но не менее быстрые архитектуры - но они не популярны. Где мне их брать? Затариваться старьём на ебее?
Я не знаю только примитивных матмоделей.
>ни структур данных
Никто из вас, питушков, не напишет структуру данных оптимальней, чем я. Мне не надо их знать - я не питух типа тебя. Я понимаю как работает этот мир - создать произвольную структуру данных для меня не составляет труда.
>Ну так если одинаково - что же сразу на гпу не пишешь.
Я уже описал. Я пишу на том, что мне нужно и на чём мне интересно. Напишу предельный код для х86 - авось захочу написать это на гпу.
Понимаешь ещё в чём штука, если я сразу напишу на гпу - пацаны мне скажут "ну на гпу естественно будет быстрее - но у нас нет гпу, у нас есть пару стоек с нехалемами - мы на них и считаем", причем пацаны именно так и говорят. Поэтому первоначальная моя цель - слить лалок, а уж потом я пойду, куплю гпу и буду на нём считать.
Какие пацаны? В таких случаях обычно пишется 2 варианта кода.
Лол, питух, ты даже синуса не знаешь, float питушней называешь. Куда тебе до каких-то матмоделей?
>Поэтому первоначальная моя цель - слить лалок, а уж потом я пойду, куплю гпу и буду на нём считать.
Ну я уже понял что у тебя питушиная задача, попонтоваться перед питушками.
Что мне о нём надо знать?
>float питушней называешь.
Это итак питушня. Не тормазит она только на х86, на которых тупо тормазит алу и получается так, что типа в конвейеере float не тормазит. Думаешь просто так добавляют mull_add? Иди почитай в штеудмануале таблички с перфомансом интрукций.
>Куда тебе до каких-то матмоделей?
А они мне и не упали - матмодели для бездарных питушков.
>Ну я уже понял что у тебя питушиная задача, попонтоваться перед питушками.
Я уже понял, что ты, питушок, нихрена не понимаешь. О5 съехал с темы и перешел на питушков? Животинушка.
Повторю тебе в 10-й раз - это задача отражает суть любой другой числодробильной задачи. Если ты этого не понимаешь - ты питух.
Нет, она отражает суть ограниченного класса задач, в которых узким местом является память.
>Что мне о нём надо знать?
Хотя бы школьную программу. Смешно же читать как ты сливаешься начиная лепетать что-то про "графиг похож на полукруг, просто там другой масштаб".
>Это итак питушня. Не тормазит она только на х86, на которых тупо тормазит алу и получается так, что типа в конвейеере float не тормазит. Думаешь просто так добавляют mull_add?
Да-да, и армы и интелы очевидно проектируют питухи, зачем-то добавляя в них поддержку плавающей точки.
>Я уже понял, что ты, питушок, нихрена не понимаешь. О5 съехал с темы и перешел на питушков? Животинушка.
Нет, питух, я стараюсь поддерживать твой стиль общения. В прошлых темах ты утверждал, что не занимаешься питушиными задачами, которые не имеют приложения в реальной жизни. А теперь, питух, вот занялся, пишешь на цпу вместо гпу только чтобы доказать что-то каким-то питухам.
Не совсем память, какой узкий - это 85% всех задач.
>Да-да, и армы и интелы очевидно проектируют питухи, зачем-то добавляя в них поддержку плавающей точки.
В армы впихнули фпу уже когда он стал популярный и питухи стали на нём хреначить фуфло для мобилок.
Работаю не совсем питухи, но интел создают процессоры для питухов, которым нужна плавающая точка.
>Нет, питух, я стараюсь поддерживать твой стиль общения. В прошлых темах ты утверждал, что не занимаешься питушиными задачами, которые не имеют приложения в реальной жизни. А теперь, питух, вот занялся, пишешь на цпу вместо гпу только чтобы доказать что-то каким-то питухам.
Все задачи для гпу/цпу являются такими же задачами. Я делаю её не для того, чтобы только питухам доказать что-то - мне интересно, смогу ли я написать идеальный код.
Для тебя обход массива не имеет приложения к реальной жизни? У меня есть полное описание задачи - уметь обходить массив, и вычислять значение точки юзать соседние точки. Так реализуется вся графа, шейдеры, картинки, видосы, числодробилки. и прочее.
Нет, вся графа, шейдеры, видосы и числодробилки кроме обхода массива включают в себя собственно алгоритм (который и нужно оптимизировать), именно этим была вызвана чья-то ирония насчет foreach. У числодробилок кроме ДУ в частных производных есть, скажем, линейное\нелинейное программирование. В графе нужно работать с разнородными данными - полигонами\вершинами\вокселями, а не только блюрить текстуры 4096*4096. Вот насчет видео врать не буду - никогда не интересовался. Но и там, несомненно, вся суть тоже не в обходе массива.
>Все задачи для гпу/цпу являются такими же задачами. Я делаю её не для того, чтобы только питухам доказать что-то - мне интересно, смогу ли я написать идеальный код.
Идеальный код под неподходящую архитектуру и бесполезную задачу упирающуюся в память? Питушиное стремление, питух.
Упоролсячтоли? Животное, иди кури шейдеры, видосы, графу и числодробилка - там максимум десяток операций над елементом.
>У числодробилок кроме ДУ в частных производных есть, скажем, линейное\нелинейное программирование.
ко-ко-ко.
>В графе нужно работать с разнородными данными - полигонами\вершинами\вокселями, а не только блюрить текстуры 4096*4096.
Это не блюр, питух. Это усреднение точки по её самой и соседям. Всё шейдеры работают так же. Все переходы рендерятся так же. Все воксели раскрашиваются так же. Питух несёт херню не понимая о чём он вообще несёт.
>Вот насчет видео врать не буду - никогда не интересовался. Но и там, несомненно, вся суть тоже не в обходе массива.
Вся суть какраз-таки в обходе массива. Берёшь x264 - берёшь интеловскйи sb без е и с e. Они отличаются контроллерами памяти - в остальном одинаковые. Сравниваешь - удивляешься, перестаёшь писать херню.
Все вычисления упираются в память питух, даже гпу упирается в память - поэтому туду и пытаются впихнуть самую крутую память. Если бы не упиралось - досих пор бы по pci с оперативой общалась.
Что, и рейкаст, и освещение работает также? Тоже усредняя по соседним точкам? Впрочем, питух, не зная что такое синус, ты в компьютерной графике все равно ничего не поймешь - максимум, в гугле названия прочитаешь, питух.
>ко-ко-ко.
Не кукарекай, питух, а отвечай давай. Где в симплекс методе сравнение с соседними элементами? А в Гомори где?
>Все вычисления упираются в память
Питух, а при чем тут твой обход массива?
А что симплекс? Симплекс тоже упрется в память, причем походу даже без SIMD. Там же во время преобразования всего 2 операции на ячейку - умножение да вычитание. А поиском строки и столбца, по сравнению со временем преобразования, можно пренебречь.
Что-нибудь посложнее надо в пример приводить ;)
Ну разве что другой метод выбрать...
А как бы вы оптимизировали симплекс, если не секрет?
Ну да, тоже вариант. Правда, обычно, такие задачи не особо упрощаются т.к. количество переменных и уравнений зависит от реальных данных.
Тоже обходом точек. Устреднение - это одна из операций, которую можно получить из сетки. Любой обход сетки - упирается в память, а ты слился питух.
>Не кукарекай, питух, а отвечай давай. Где в симплекс методе сравнение с соседними элементами? А в Гомори где?
А кто с ними сравнивает? Ты сам-то питух, отвел на все мои строчку, или силлся? Ты слился питух, а я отвечаю на все.
Устреднение в данном примере взято потому, что в 90% задач значение точки зависит от её соседей. В остальных 10% ты можешь читерить и считать значение для каждой точки отдельно.
>Питух, а при чем тут твой обход массива?
Тем, что обходится массив - и именно его обход и упирается в память.
Раздели память на ведра - получишь порядок. Если получится на порядок лучше твоего, ты повесишься? Интересно, что будет делать поциент, если внезапно! выяснится, что он - чемпион в нахуй не нужной дисциплине?
Это тоже фуфло, которое придумал анскильный бездарь, а другие бездари ему вторят - лижбы не писать нормальный код.
>Так вот. Формула гласит, что даже если мы не упираемся в пропускную способность памяти, и всего десятая часть вычислений должна исполняться последовательно (т.к. зависит от предыдущих результатов), то хоть 200 процов, хоть 100500, хоть дохуялиард, больше чем в 10 раз ты ускорить вычисления не сможешь. Никак.
Это не формула питушка гласит - это здравая логика гласит. Только конкретно в этой задаче время обработки одной сетки может стремиться к нулю, поэтому это для неё не работает.
Как именно ты будешь уменьшать время обработки сетки - по ведру на каждую точку, по ведру на лайн, если это конвейер и прочее.
Хотя этот питушок кукарекает просто ради того, чтобы кукарекать - конкретно тут от сотни ядер был бы профит, если бы не память. Но питушки никогда не думают о памяти - поэтому они и питушки. Они даже примитивной кучей руками рулить не могут - какая им память. В этом вся и проблема.
Ну и да, мы можем устремить 90% задачи к нулевому времени, но остальные 10% задачи будет выполнятся за время t, поэтому даже при идальном стечении обстаятельств - мы не сделаем быстрее, чем за t, которое с текущим техаппаратом устремлять даже близко к нулю не можем.
Ой, да я же в ещё 14 лет профи был!
Не переносить скобку.
Писать вхламину быстрый, компактный код. Ты никогда этого не мог, да и сейчас не может - поэтому ты питух.
Про твой быстрый код мы уже видели.
Зато я умел писать непонятный код.
Самый вменяемый из невменяемых.
>Про твой быстрый код мы уже видели.
Где? Удиви.
>Зато я умел писать непонятный код.
Ты всегда говно писал и будешь писать.
Пишешь свой foreach? И давно ты его пишешь? :D
float[4096][4096], float2[4096][4096];
...
float2[256][256] = ((float[256][256] + float[256][255] float[256][257] + float[255][256] + float[257][256])/5);
...
memcpy(float2, float, 4096*4096*4);
Когда питушок, ты дойдёшь хотябы до предела своей памяти - я тебя послушаю, а пока ты жалкий питух.
настоящий supetuhackkiller1997 считал, что float для анскильных питушков
и да, на гпу эта хуита очень неплохо будет считаться
Ты питушок и дальше будешь кукарекать, нихрена не зная о матчасти? Причем тут гпу? Он жешь это хотел сделать форичём - пусь сделает форичем, хоть на гпу - я поржу.
Судя по словам "изменять сразу float[256][256] ты не можешь, ибо если ты её изменишь - у тебя будет неправильный результат, ибо от неё зависят ещё много точек, которые ты пока не посчитал.", выхлоп зависит только от входа, и совершенно не юзает промежуточных результатов. Да еще и флоаты. Эта задача просто идеальна для расчетов на GPU.
P.S. Когда-то для прикола заливал в текстуру 8192х8192 карту нашего городка, врубал построение мипмапок, и показывал ее на экране со скроллингом\зумом\поворотами. Нагрузка вообще не ощущалась.
А теперь ответь мне питух, кому нужна мемкопи, котораян е упирается в память и кому нужны питухи, которые не могут написать нормально мемкопи?
Да, моя мемкопи быстрее твоей мемкопи, и быстрее самой быстрой gnu memcpy(), а она одна из самых быстрых в мире. Быстрее моей мемкопи запилить нереально.
И да, моя мемкопи не загаживает кеш. А ты будешь удивлятся - почему после мемкопи твой цикл о5 будет подгружатся из оперативы, хотя он должен быть в кеше.
Поэтому твой удел, питух, писать говно и кукарекать.
Потом приходи, когда напишешь это так, чтобы оно было быстрее памяти.
Посчитал ты нулевую строку - сохранил во floatl[]; - начал считать вторую - надо считать о5 во floatl[], но ты питушок не можешь записать флоатл назад, и бо теперешний твоё счёт зависит от предидущих записей - думай лучше - кукарекай меньше.
Если же нужно посчитать среднее по девяти точкам, то да, работать не будет. Придётся сохранять ещё одну строку (но это уже лишнее)... либо три темпа вместо одного. Итого при втором варианте расход будет 4096*4097 + 3.
0 0 0 0 0 - посчитал, записал в tmp - в темпе лежат не нули.
1 1 1 1 1 - тут ты куда будешь считать? Записать tmp в строку выше ты не можешь - значит нужен ещё один tmp.
О5 начинаешь кукарекать, вместо того, чтобы подумать.
Нахуя тут memcpy? Свапай указатели и погнали дальше, на следующую итерацию.
P.S. Ну если указатели не нравятся, а массивы в глобалках - напиши две копии расчетного цикла - один из float во float2, второй наоборот. И исполняй их по очереди.
А так же - "твоя идея" со свапом отменяет мемкопи, но не отменяет х2 по памяти. А х2 по памяти - в 2раза медленее.
x2 по памяти тут написал ты, в качестве примера.
Поэтому пусть мне этот питушок захреначит это на фориче - я поржу, а ты сиди и молчи.
Дальше код в духе a[y][x] = (a[y][x] + a[y+1][x-1] + a[y+1][x+1] + a[y+1][x] + a[y+2][x])/5. Для крайних строк и столбцов не забываем выкинуть лишние слагаемые.
По окончании прохода у нас внизу остается ненужная строка, и следующая итерация пойдет снизу вверх.
Сколько строк тут не принципиально, если они валяются в л1 - на худой конец в л2.
Что-то я туплю сегодня, почему там не хватит одной строки?
1 1 1 1 1 - тут ты куда будешь считать? Записать tmp в строку выше ты не можешь - значит нужен ещё один tmp.
У тебя минимум 2 линии взаимозависимые:
0 0 0 0 -- ты не можешь сразу сюда писать - у тебя следующая зависит от этой.
1 1 1 1 -- ты не можешь ни сюда, ни в предыдущую сразу писать - у тебя зависит от предыдущей.
2 2 2 2 -- только сейчас ты можешь начать писать в нулевую.
3 3 3 3 -- а сейчас в первую.
Как-то так.
Не, смотри:
0 = (4+5+8)/3, 1 = (4+5+6+9)/4, 2 = (5+6+7+A)/4...
В нулевой строке теперь есть одна из строк ответа, исходные данные пока не задеты.
4 = (4+8+9+C)/4, 5 = (5+8+9+A+D)/5, 6 = (6+9+A+B+E)/5...
Здесь я затер одну из исходных строк, но для вычисления последующих она уже не нужна.
8 = (8+C+D+G)/4, 9 = (9+C+D+E+H)/5, A = (A+D+E+F+I)/5
И так далее.
Ты не юзаешь строку как буфер, а смещает ответ вверх - там самым выбивая те же 2строки.
В конце итерации - тебе надо либо юзать ту же мемкопи, причём ещё более медленную - либо юзать кастыли на ммапе и madvise().
Ну ты дочитай, пожалуйста, до конца тот коммент, в котором я предлагал свою идею: "По окончании прохода у нас внизу остается ненужная строка, и следующая итерация пойдет снизу вверх.".
А после того как вторая итерация закончится - у нас опять есть пустая строка вверху. Из-за такого чередования направлений и не нужно копирование.
Это надо фигачить ещё одну функцию - и уже не факт, что у тебя это всё добро влезит в л1. Для 1024 мои банальный анрольный обход без махинаций занимает 30% l1i на ссе.
Причем, смотри - тебе надо один хрен юзать буферы - ибо тут нельзя юзать не nt r/w, в противном случае - будет тормазить, а в этом - тебе о5 надо будет читать оперативу, что тормазит.
Ты читаешь первую строку в буфер - меняешь настоящую, потом на следующем лайне - ты читаешь предедыдущую уже из буфера, а не из лайна. Записываешь настоящую - а следующую читаешь о5 из буферы. Тут надо в районе больше 3-х буферных строки - с махинациями ещё больше.
Так ты на данном примере даже сэкономишь такты, но я подумаю над твоим предложением.
А если не секрет, сколько процентов прироста получил от использования non-temporal чтений\записей? Емнип они же почти не дадут профита для самого цикла, а в основном спасают кеши от засирания L3 нашей матрицей.
А как насчет вот такого варианта - 3 буферных строки, на которые ссылаются указатели old, cur, new. Считаем нечто типа a[y][x] = (old[x]+new[x]+cur[x-1]+cur[x+1]+cur[x])/5 пачкой на SSE, записывая кусочек результата в матрицу через non-temporal write. old[x] заменяем на a[y][x+2], загруженное через non-temporal read. В конце строки крутим указатели tmp = old; old = current; current = new; new = old.
Здесь, по идее, 3 буфера спокойно влезут в L2 при ширине матрицы до 16к, и имеется только необходимый минимум non-temporal загрузок/сохранений - на каждом проходе каждый байт читается из оперативы 1 раз и пишется в нее 1 раз.
Возможно еще с префетчем поиграться придется, чтобы a[y][x+2] не тупил.
P.S. Кто-то минусует все твои посты по инерции ;)
Разы. Хотя именно разы дёт nt+префетч.
>Емнип они же почти не дадут профита для самого цикла, а в основном спасают кеши от засирания L3 нашей матрицей.
И этим дают профит - они не засирают наш кеш и мы можем обрабатывать почти со скорость оперативы/2. Без махинаций - мы можем вообще попробовать навечно оставить часть массива в кеше. Если у нас есть 8-10метров л3 - даст буст чутьли не дополовины на 16метровых массивах.
Это вариации того, что я описал - можешь юзать что хочешь - что будет быстрее - то оставь.
Их и надо в районе 3-х - остальные - это махинации с будущим. Да, суть субферов в том, чтобы свести скорость обхода до минимум 50% оперативы.
Да, псевдо nt чтение реализуется через префетч на старых штеудах. Префетч естественно нужен - без него будут тотальная лажа.
Мне похрен на минусяторов - пацан объяснит в чём я не прав - животное минусанёт. Норм пацаны минусуют только откровенную ересь - мне просто лень что-то минусовать вообще.
Код абсалютно одинаков:
Равно:
Заменяем movntps на movaps:
Код записывает 32мегабайтный массив 8гигабайт раз.
Кстати, подскажешь, чем можно посмотреть эту статистику?
Есть oprofile, но он слишком сложен для рядового юза.
Есть интеловский втюн, под линукс халявный - но он тормазнутое жабаподелие.
Есть valgrind, вернее его часть - но он тормазит. Вроде под маздайку даже есть, а может и нет.
Это сделанно перфом. Перф умеет считать всё: http://pastebin.com/fytzs0Y3 - на новомодных штеудах возможно ещё дохрена чего добавили.
IPCM же.
http://software.intel.com/en-us/articles/intel-performance-counter-monitor/
https://secure-software.intel.com/en-us/system/files/article/326559/intelperformancecountermonitorv2.4.zip
Помню и под athlon-64 была чудесная тулза. Лет 7 назад смотрел ею.
ЧСХ больше всего память любят архиваторы. Самое большое число промахов в обоих кешах и непредсказанных бранчей выдавал мне winRar.
s/v2.4/v2.5.1/
Спасибо, посмотрю.
Да на фейхуя мне под винду, под линь без проблем собралось... Вот только:
Error: unsupported processor. Only Intel(R) processors are supported (Atom(R) and microarchitecture codename Nehalem, Westmere, Sandy Bridge and Ivy Bridge). CPU model number: 23 Brand: "Pentium(R) Dual-Core CPU E5400 @ 2.70GHz" :(
Облом, одного поколения не хватило. У меня почти такой же: E5200 в старом компе стоит.
>под линь без проблем собралось.
Да там и фич больше кстати.
>Nehalem, Westmere, Sandy Bridge and Ivy Bridge
А Haswell?
Интел в этих процах запилили чудо-технологию TSX - транзакционную память. Давно хочу попробовать.
http://oprofile.sourceforge.net/docs/intel-core-events.php
Кстати в кои-то веки я плюсанул петушиного Царя, который.
Продолжение следует?
Запись:
Кора2:
16384 Kb block: 3369.59 MB/s
16384 Kb block: 8167.27 MB/s
Запись 16-ти метров 8гигов раз. На любом другом штеуде картина похоже - на амд так же, на последних бульдозерах там ситуация чуть равне на паре нитей, ибо контроллер говно - на 4+нитях - там ситуация та же.
Ты не видишь тут произвол и двойные стандарты?
Выбери сишку, выбери ОС, выбери конпелятор, выбери железо, плис и схематехнику. Выбери цех фотолитографии и свой идеальный процессор.
Но зачем мне все это нужно? Я выбрал не выбирать си...
Я выбрал заедушное накидывание кнопок на формочку. Почему? Да потому что какие могут быть почему, когда тебе платят деньги.
>>Я не делаю никакие проекты
Это уже интересно.
Я и не говорю, что тебе это нужно.
>Я выбрал заедушное накидывание кнопок на формочку. Почему? Да потому что какие могут быть почему, когда тебе платят деньги.
В том и суть - для тебя программирование - просто дело, сливая на которое время - ты получаешь бабло.
Ты можешь сливать время не только за бабло, на и обновременно с этим на своё развитие - это средний путь.
Для меня программирование - хобби, на которое я сливаю время потому, что мне это интересно.
Естественно для тебя важным является простота - ибо тебе лень сливать больше сил, если бабла в итоге столько же. Для меня это не аргумент - поэтому мы не понимаем друг друга.
>Это уже интересно.
Что конкретно?
Если фигурные скобки есть, то как бы сказал тарас, погроммист низкого качества.
Мы сами сделали из него монстра.
>в инете все пытались втоптать его в говно...
Рунет такой рунет. Не унизив спрашивающего, никто отвечать не будет. Вот и научили малолетнего долбоеба.
Да мне кажется, что оно было изначально. Все-таки когда в юности кто-то в чем-то разбирается лучше своих друзей (а судя по разговорам Царь все-таки шарит в low-level оптимизациях), то он считает, что он может свернуть горы, и ЧСВ зашкаливает...
> Вот и научили малолетнего долбоеба.
На свою голову. Каюсь, "шел бы ты отсюда петушок" написал ему я. До этого он вроде слова "питушок" и "питушня" не употреблял...
Я тоже когда-то сворачивал абстрактные горы типа эмуляции 8080 проца на 40мГц машинке (с кнопкой турбо!) и вбивания 4кб хекс кодов из журнала только ради того чтобы поиграться с этой древней прогой в шахматы ;)
Теперь я лучше понимаю всё, а я не люблю что-то делать, когда я чего-то не понимаю.
Я делаю вещь так, что я мог сам себе сказать, что я сделал хорошо - а спрос с моего кода у меня ещё выше, чем с тех, кого я хаю. А как ты понимаешь - я не могу с себя спрашивать, если я чего-то не понимаю в коде - поэтому ДО ТОГО, как что-то писать - я должен абсалютно полность научится понимать код и всё то, что под ним.
В противном случае - моё дело станет мне не интересным.
Да, царь всегда был царём. Даже в детсаде царь был наровне со взрослыми. Хотя, что самое интересно - пока детки маленькие - они не строят из себя что-то, а слушают и внемлят. Потом, когда детки становятся школотронами и лет до 25-30 - они тотальная потеря для взразумления. Поидее я всегда считал, что большие дяди должны вести себя как 5-ти летние детки - у них не должно быть предвзятости, боязни за свою жопу, боязни слить спор, боязни показаться неправым. Дядям уже должно быть интересно БЫТЬ правым, а не казаться правым в глазах анскилледа.
>Все-таки когда в юности кто-то в чем-то разбирается лучше своих друзей
Да нет у меня никаких друзей и небыло никогда. Мне не интересно быть царём в глазах анскилледов - мне интересно стать царём слив сильных мира сего.
>а судя по разговорам Царь все-таки шарит в low-level оптимизациях
Нихрена я нивчём не шарю. Я пару лет назад начал писать на плюсах, кутишках и прочих. Через полгода одалело, я увидил сишку - в ней небыло всего того, что меня одалевало в плюсах. Я думал: А как пацаны пишут на сишке без крутых С++ фич. Поэтому первым делом я осилил сишку, пиля всевозможные идеальные конструкции - и потом я понял, что сишка сливает питухплюсы просто в говно, ибо я могу реализовать всё, что угодно и даже лучше, чем в плюсах.
Поэтому я и люблю спорить с плюсовиками, ибо я знаю плюсы и знаю их фичи, но я так же знаю, что я могу пилить без этих фич ещё удобней, чем с ними.
В конечном итоге я последний год пишу на сишке - и я рад, но когда я смотрел код сишников - я дивлялся, как эти люди, писавшие на сишке десятилетиям, могут писать такое говна, аля свичи на 500строк. Поэтому у меня ненависть к питух Си. Я считаю, что это неосиляторство позорит сишку - и моя задача донести суть сишки до тех, кто не понимает сишки.
А без low-level писать что-то не интересно, ибо как писать не зная, как это будет работать?
И тогда, возможно, у собеседников будет меньше поводов и желания харкнуть тебе в морду.
Будет такая же ситуация как с сишкой - я буду знать её как царь, но больше её никто так не знает(меньше 1% программистов) - поэтому всем похрен.
Только те самые анскильные питушки начинают питушиться, ведь им нечего ответить, у них есть только бугурт. Не пойму, зачем со своими сишкознаниями опускаться до их уровня.
Царь не перестанет быть царём, если будет предельно вежливо говорить с остальными. Наоборот, он так велик, что его не заботят мелкие тролли.
Народ не знает русский на уровне Пушкина. Но ведь ценителю живописи не обязательно уметь рисовать? Понимать и воспроизводить - разные вещи.
superhackkiller1997, всё же равно придётся общаться с людьми. В противном случае следует перелезть на ассемблер и писать нечто специфичное под заказ за миллионы нерусских рублей.
Я считаю так не потому, что я типа понтовей лалок. А потому, что у меня абсалютно объективно отношение к себе - я знаю насколько хватит моего скилла, и что я могу. За какое время я могу что-то осилить. Я не могу просрать свои царские способности и начать пилить говно.
>шел бы ты отсюда петушок
А в этом и суть. Это называется предвзятость - вы увидили непонятноу конструкцию и сразу вынесли вердикт - "питушня", даже не подумав, почему она не работает. Теперь всех, кто говорит неподумав - я назваю питушками.
Вот, кстати, да. На иностранных тематических форумах\конфах почему-то я такого отношения к спрашивающим почти не встречал.
И не нравится тон - ну так пиздуй дальше, или лучше, вообще форума. Тут любители побрюзжать не нужны.
Он ответил в какую сторону копать, предложил юзать xpath+html5lib вместо beautifulsoup. Когда ОП попросил выложить пример скрипта - он выложил.
> Что сказали бы о таких на "зарубежных" форумах?
Да ничего бы не сказали ;) Там почему-то не принято переходить на личности и разводить срачи по пустякам. Ну или мне просто попадаются удачные странички, когда я что-то ищу.
> И не нравится тон - ну так пиздуй дальше, или лучше, вообще форума.
Судя по этой фразе - вы типичный представитель рунета ;)
> Тут любители побрюзжать не нужны.
Посмотрите в зеркало, пожалуйста ;)
/thread
>Он ответил в какую сторону копать
Мне не копать нужно было, а конкретный код.
>Да ничего бы не сказали ;) Там почему-то не принято переходить на личности и разводить срачи по пустякам. Ну или мне просто попадаются удачные странички, когда я что-то ищу.
Тебе, наверно, SO попадается? Там все чистят просто.
>Посмотрите в зеркало, пожалуйста ;)
Я не начинаю издеваться над каждым, кто просит помощи (а по-другому это не назовешь).
>/thread
Ты не модератор, сучечка.
> Мне не копать нужно было, а конкретный код.
Об этом можно было написать в первом посте - "скиньте, пожалуйста, пример как это правильно сделать". Вменяемо и вежливо сформулировать свои запросы, чтобы их не приходилось угадывать другим, это так сложно для представителя рунета?
> Тебе, наверно, SO попадается?
В основном да. Ну и мэйллисты.
> Я не начинаю издеваться над каждым, кто просит помощи
Оп это вы? Ну где там над вами издевались, кроме коммента #7? Посчитали строчки тайком да код не сразу кинули... Вселенская катастрофа...
> сучечка.
И вам не хворать.
Как бы само собой подразумевается, что меня интересует не количество элементов, а код, который это посчитал.
>Ну где там над вами издевались, кроме коммента #7? Посчитали строчки тайком да код не сразу кинули... Вселенская катастрофа...
Этого мало? Не не сразу кинули, а вообще не кинули. Спрашивается, если ты решил повыебываться, пообсирать вместо того, чтобы помочь - ну нахуя ты пришел на форум, нахуя отвечаешь? Рашка, или не рашка. ЧСВ-шное мудачье, вот в чем суть.
>В основном да.
У меня для тебя плохие новости - SO для спрашивающих ДАЛЕКО не такой пушистый, как для тех, кто пришел из гугла, собсно, это такая база ответов, которую заставляют заполнять хомячков, этакий пылесос. На корректно поставленный вопрос могут как качественно ответить, так и не ответить вообще, заминусовать или просто закрыть к хуям собачим без особых обьяснений, причем это все рандомно. И разборки в вопросах там трут, или сами юзеры, или мочераторы.
Так что ты сначала позадавай там вопросы, а потом рассказывай.
Хотя любой вменяемый человек понимает, что в 90% случаев консолечька сливает гуйню в хлам. В остальных 10% тоже, просто там крысный интерактив.
* Пердолики АНАЛьно ПЕРДОЛЯтся с консолью.
* Пердолики мечтают, что бы все другие тоже ПЕРДОЛились с консолью. Им обидно что никто кроме них не хочет, так яростно ПЕРДОЛИТСЯ.
* Пердолики яростно флюдоросят, вылизывая АНУСЫ друг у друга и яростно дрочат на любое проявление ПЕРДОЛИКСА™, особенно на ПЕРДОЛЕНИЕ консолью в жопу.
* По мнению пердоликов ПОПЕРДОЛИТСЯ КОНСОЛЬЮ на ночь, днем и еще вечерком пару раз - есть естественное желание любого нормального человека. (ЛОЛШТО?). Остальные просто не поняли этого.
* СВОБОДА И НЕ_СВОБОДА. По мнению пердоликов СВОБОДА днями и ночами ПЕРДОЛИТСЯ С ПЕРДОЛИКСОМ лучше СВОБОДЫ не_ПЕРДОЛИТСЯ днями и ночами с другими ОС.
Причем СВОБОДА НЕ_ПЕРДОЛИТСЯ в ужасе называется НЕ_СВОБОДОЙ ПЕРДОЛИКАМИ.
* СВОБОДА пердоликов имеет странный вкус. ВКУС_ГОВНА. Остальные просто не поняли всю прелесть вкуса ГОВНА из АНАЛа.
* Пердолики всегда стремится АНАЛЬНО огородится. Любой БУГУРТ провоцирует выпил постов/тредов. ЛЕГИОН призирает пердоликов за это. Особенно того пердолика что выпиливает посты на сосаче. БУГУРТ, да?
Пользователь линукс — по сути жертва обстоятельств, анальный клован, у него очень дохуя времени надрачивать компьютер в полной мере, ведь он или не работает, живя на мамкиной шее (если ему 20 и больше), или школьник. Поэтому пердопетушки остаются вечными дитями, с горем пополам освоившими заправку картриджей, не вникая в тонкости общения с реальными людьми. Называть их иначе как петушками совесть у людей не позволяет.
А вопли некоторых пердоликов, называющих виндовс «питухос», это чисто из-за баттхерта и неимения аргументов, как бы голословное утверждение. Это как в детском садике:
— Вася, ты все-таки не из той пизды уродился, туповат ты.
— Сам дурак!! САМ ДУРАААААК!!!
дегенeраты, чмошники, высерки, лохи, лузеры обреченные годами сидеть у папы с мамой на шее и пердолится консолью в сраку ПЕРДОЛИКС™ [spoiler]ЖМУ/АНАЛИКС™[/spoiler] до 30 лет. потом у них просветление в 30 и они идут картриджи заправлять/менять.
Но к ним я отношусь хорошо, как и к наркоманам. Наркоманы должны сколотся и сдохнуть. А пердолики, своего рода КАЛ от IT, должны пребывать на социальном дне и освободить рабочие места в IT для адекватных людей. Это естественный отбор, слабые должны умереть. Ничего личного.
план адептов штульмана прост и понятен абычнаму пользователю: приходим, говорим, что всё говно, костыли, за деньги, закрытая проприетарщина, а ПЕРДОЛИКС рулит. когда нам приводят контраргументы, говорим, что пост не имеет смысла! или еще лучше, говорим, что у оппонента не хватает ПЕРДОзнаний! занавес!
Споря с лалками, в 95% случаев я теряю в ремя - в 5% я наткнусь на человека, который будет в чём-то прав. И уже в следующий раз я буду ещё лучше знать и понимать тему, и ещё больше буду прав. Профит от этих 5% людей перевешивает слив времени на питушков, хотя иногда и питушки могут сказать что-то интересное мне.
Вы же срётесь хрен знает для чего - в этом и разница.
Вот так и выходит. Питух не осилил ЯП на котором пишет. Не осилил гугл. Не осилил мозг и кукарекает, что он чего-то там достоин - нихрена ты недостоин - ты питух, точека.
Регайтесь на фрилансе, платите деньги, там люди простые, сделают быстро и не дорого, докапываться не будут ;)
А Приходить в интернет с мыслью о том, что вам кто-то что-то обязан, глупо.
И да, я с вами начал разговаривать нормально - про питуха начал кукарекать ты, неудасуживщись разобраться в вовпросе.
П.С. Не кормите.
Я пишу то, что нравится мне - мне не нравится говно - я не могу писать говно, ибо мне проще ничего не писать.
А где полезно - везде. Всё написанно как говно - куда не глянь. Броузер на 50вкладок жрёт 2гига оперативы, торрентокачалка качая насилует диск просто в хлам: 10метров/с на запись, блок 4метра - 550тпс. Как можно было написать такое говно - я не представляю. И это банальная прикладуха. Даже портеж и тот написан как говно. Самое нахрен скилловое комьюнити у генты, но портеж написал как говно.
На уровне не прикладухи всё ещё пичальней. Что делать? Мне купить ссд для торентокачалки? Купить 20гигов оперативы для броузера?
Да банально - парсить файлы НИКТО НЕ УМЕЕТ, даже такую банальщину. Всё это пичально и мне не нравится, поэтому у меня такое отношение к тем, кто не захотел написать нормально. Ладно блин нахрен маздайщик-делфятник заедушный, аля тарас, который просто неспособен что-то написать. Но когда откровенное говно пишет сишное спо-комьюнити - мне становится грустно.
Насчет браузеров - это беда. Они, наверно, имеют суперпупервыебанные фичи, но 95% вебмастеров ими не пользуются, а память браузеры жрут больше на всех сайтах. И вообще, форк пришел с юнипсов, где форки бесплатны, пока процесс не изменит страницу памяти (copy on write), на винде это не так. Но это уже обсуждение браузеров.
>можно привести к нормальному виду без дрочерства с тактами и кешем процессора, более того - написана она может быть хоть на яве, хоть на питоне, хоть на руби, оно абсолютно общее для всех языков. Или мне СИШКОПРОБЛЕМЫ припомнить?
Нет, именно оно и нужно. Нужно нормально написать кеша( на жабе/руби/питоне ты это не сможешь), вычислялки контрольных сумм, strcmp(), нормальную работу с сокетами.
Где на жабе/питоне/руби епуллина и нормальные калбеки? Нету - в этом и проблема. Где нормальное посиксапи? Нету - поэтому код и говно.
Где на жабе/питоне/руби нормальное управление памятью? Как я буду строить свои систему кешей, чтобы добится <1 иопса в секунду? Нету - в этом и проблема. Где нормальное посикс апи? Где лсики, где madvise(), mmap()?
Проблема торрентокачалок именно в том, что они написанны на сишке так же, как и на жабе/питоне/рубях - в них нет нормального кеша, нормального балансёра, нормальной работы с сетью - в них скорость на блоках скачен - они неспособны нормально обрабатывать тысячи коннектов в секунду. Их sha1() еле-еле выдаёт 5-6гигов в секунду, а кеша работают на уровне 20гигов в секунду.
Браузеры говно по определению - их уже не спасти.
https://wiki.theory.org/BitTorrentSpecification - вот тут получше расписано.
http://bittorrent.org/beps/bep_0005.html - DHT, без него вполне работает.
Так что DHT и PEX можно отложить на потом.
http://download-origin.transmissionbt.com/files/ Да, libtransmission написана на сишечке. Стоп! Она уже упомянута выше.
http://mldonkey.sourceforge.net/BitTorrent
Тут коллекция ссылок на протоколы.
А описание протолов - говно. Что как - куда пихать. Всё это для меня логики не имеет, поэтому мне нежун пример. Поэтому мне проще взять трансмиссию, взять wireshark и отснифать.
Я вообще не представляю, что нужно в протоколе, кроме пары оппкодов. GET_BLOCK;TORRENT_ID;BLOCK_ID; - тебе в ответ клиент посылает этот блок, в конце вы обмениваетесь статусами - Всё ок, спасибо, либо Всё ок, дай ещё пару блочков. Если это поверх tcp.
http://bittorrent.org/beps/bep_0015.html
А между клиентами хитрее. Там может быть tcp, а может быть uTP — ересь, придуманная мюторрентом:
http://bittorrent.org/beps/bep_0029.html
http://bittorrent.org/beps/bep_0003.html
Возможно, проблема в том, что такой свиток текста плохо читается. Его приходится просматривать несколько раз целиком.
Что вам не нравится - я не понимаю.
Ладно udp анонсер ещё можно понять, хотя без слёз не взглянешь, но http анонсер - лютая фекалия.
Как всегда проще запилить свой торрент, чем реализовать нелогичное говно - но я держусь.
П.С. Да, это будет моя жжешечка.
Чтоэта?
>Где на жабе/питоне/руби епуллина и нормальные калбеки
Ебанулся? Твои каллбеки называются замыкания и есть они почти в любом языке, кроме явы, конечно.
>вычислялки контрольных сумм,
Стандартная библиотека.
>Нужно нормально написать кеша( на жабе/руби/питоне ты это не сможешь)
Пруфов, конечно, не будет. Про азуреус не слышал? Он явовый.
>Их sha1() еле-еле выдаёт 5-6гигов в секунду, а кеша работают на уровне 20гигов в секунду.
Это, блядь, просто пушка! В каком месте вычисление хеша узкое место? Откуда ты собрался с такой скоростью читать? Так и знал - диванный кукаретик-синтет. Можно игнорить.
>в них нет нормального кеша, нормального балансёра, нормальной работы с сетью - в них скорость на блоках скачен -
Все это можно написать только пердолясь низкоуровневыми оптимизациями под конкретную модель процессора?
>они неспособны нормально обрабатывать тысячи коннектов в секунду.
При чем тут сишка-то?
Блядь, да у тебя еще и кругозор нулевой, кукаретик. Синдров утенка и АССЕМБЛЕР в срачле.
Зато в других языках нет СИШКОПРОБЛЕМ, как ручное управление памятью и связаные с этим радости вроде сегфолтов и утечек, про ПЕРЕПОЛНЕНИЯ БУФЕРА вообще молчу, есть исключения, а значит, они безопасны по умолчанию, в отличие от сишки, где забыл проверить код возврата - и получил рнр, где главное продолжать работу любой ценой.
man epoll
>Ебанулся? Твои каллбеки называются замыкания и есть они почти в любом языке, кроме явы, конечно.
Как мне записать указатель на этот калбек в кернелспес, чтобы сразу вызывать его? Иди почитай как работает епуллина.
>Стандартная библиотека.
ко-ко-ко, говно твоя стандартная библиотека.
>Пруфов, конечно, не будет. Про азуреус не слышал? Он явовый.
Ты упоролся? Предел для твоих кешей в яве - гигабайты. Предел для сишных кешей - десятки гигабайт. Посчитай.
>Это, блядь, просто пушка! В каком месте вычисление хеша узкое место? Откуда ты собрался с такой скоростью читать? Так и знал - диванный кукаретик-синтет. Можно игнорить.
Я скачал блок в кеш, на твоей питух яве я обработаю его(посчитаю кеш, сравню, запишу на диск) за 100к тактов, на сишке за 10к. А если мне надо скинуть 10блоков? Опа уже ггц, опа уже я сожру у юзера целое ведро. А на сишке будет всплеск на 100к тактов.
>Все это можно написать только пердолясь низкоуровневыми оптимизациями под конкретную модель процессора?
Не под модель, а под х86. Хватит кукарекать в тех темах, в которых не шаришь. Всё это "конкретная модель процессора, чипсета и т.п." ушло лет 10назад.
Ты это напишешь пользуясь низкоуровневыми особенностями ОС, ибо на типух майздайке этого нет.
>При чем тут сишка-то?
Ну посчитай - в сишке 10к тактов на калбек - в яве 100к. Когда ведро загнётся? Ты думаешь треды в твоей яве просто так придумали?
О5 мне кукарекает питушок, который нихрена о работе ОС, ЯП, подсистем памяти не знает.
>Зато в других языках нет СИШКОПРОБЛЕМ, как ручное управление памятью и связаные с этим радости вроде сегфолтов и утечек, про ПЕРЕПОЛНЕНИЯ БУФЕРА вообще молчу, есть исключения, а значит, они безопасны по умолчанию, в отличие от сишки, где забыл проверить код возврата - и получил рнр, где главное продолжать работу любой ценой.
Сишкапроблемы удел питухов. У меня нет ручного управления памятью, утечек и сегфолтов. Несуществует никакого переполнения буфера в х86, просто питухи типат ебя об этом не знают - вот и вояют говно.
В сишке есть иключения, в сишке есть переходы в любую часть кода - просто питухам это юзать не дано.
>Именно, и для чего-то более большого сишка уже начинает мешать.
Для следующих своих высеров тебе придется показать, что на других языках это сделать невозможно, или что твои высеры себя хоть как-то окупают. Все остальное ты будешь делать, сидя на шее у мамы.
/thread
Мешать анскильным питухам. Людям только помогает. Зачем мне бороться с гц в яве, юзать какие-то питух классы, тормазящие либы. Жрать в 5раз больше памяти. Думать о какой-то жвм. Мне проще взять и просто написать на сишке, или ты думаешь, что если сишка подходит для самых сложных и больших программ в мире: ОС, конпеляторы, перфоманс - это самые сложные задачи в мире, то для решения простых задач она не подходит?
Ты считаешь, что если у меня есть молоток, которым строят самый сложные конструкции в мире, который может забивать любые гвозди - он забьёт десяток гвоздей хуже, чем твоя жаба? Не смеши мои тапки - ты сам себе противоречишь.
Ну давай - я пишу на сишке торрентокачалку, а потом ты пишешь её на яве и мы поржем. Я поржу как твоя маздайка будет шуршать лсиком, тормазить и питушить. Ты не сможет сделать нормальный кеш даже на 20блоков, не то, что на сотню.
Стоимость поддержки одного коннекта у тебя в разы больше, чем у меня - тебе надо будет юзать сотни нитей, чтобы не словить ГЦлок.
>он забьёт десяток гвоздей хуже, чем твоя жаба
Он забьет медленнее и с большими требованиями к забивающему, а значит, спрос на таких плотников будет только там, где они будут окупаться лучше, чем плотники с более простыми молотками.
А вот, если его возмёт питух - да, он его даже не поднимет. Поэтому удел питухов - забивать один гвоздь в минуту, ширпотребным говном.
Все клали на твоей спрос - меня не интересует сознание нищебродов. Суть не в окупаемости, питух глупый - суть в том, что таких плотников мало, а чем меньше таких плотников - тем дороже их время, ибо они потратили в мильёны раз больше времени на своё развитие, чем рядовой заедушный питух.
Поэтому проще купить 1000питух, которые забивают 1гвоздь в минуту, чем мастера, который забивает 1000гвоздей в минуту. Да и то, матера не покупаются, ибо мастер не заедушный раб с нищебродским сознанием - он просто не будет делать работу, которая ему не интересна.
>Поэтому проще купить 1000питух, которые забивают 1гвоздь в минуту, чем мастера, который забивает 1000гвоздей в минуту.
Реальность обычно выглядит иначе, прыщавый друк. Ресурсы растут экспоненциально, и 20 питухов будут в 10 раз быстрее мастера, а стоить так же, да и с ЧСВ у них будет попроще. А мастер будет сидеть у мамы на шее и рефрешить говнокод.
>Все клали на твоей спрос - меня не интересует сознание нищебродов.
/thread. Так и думал, сидишь у мамки на шее.
А почему ты рассуждаешь так свысока, с понтом ты сам не петух?
Все это граничит с инфантилизмом, Вам не кажется?
В слове "петух" нет буквы "и", а обращение обособляется - на заметку тебе...
Аллах накажет тибея.
Как же оно звучало, как -то так:
Косяк, забейся!
Нет, не то.
Коньяк, разлейся!
Опять не то. Ах вот оно!!! Я вспомнил!
Кяфир, закиройса!!
Минуисуя участников, ты помогаешш обществу снижать ЧСВ.