LINUX.ORG.RU
Ответ на: комментарий от kawaii_neko

Все равно в ядре идет копирование в буфер сокета

Ммм, я тут не силён. Я вот только несколько лет назад видел вот этих чуваков которые напрямую из userspace данные отдавали сетевушкой: http://info.iet.unipi.it/~luigi/netmap/ . Это, конечно, трава позабористее sendfile и, наверно, нерелевантно к данной дискуссии, но.. я просто оставил это сдесь.

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

Ты мне покажешь и расскажешь где происходит «нехватка непрерывных блоков памяти»,

так, тут я прословарился, признаю

причём тут пайпы

если объем передаваемых данных больше размера буффера? Как ты их сммаппишь в одно?

anonymous
()

Вот мы фигней маемся, а кто-то реального бота написал: nixbrain. Ведь поначалу и не поймешь, что это бот (кажется сначала, будто это просто какой-то четырехлетний детсадовец вместо тихого часа с компьютера воспитательницы на ЛОРе флудит).

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

а кто-то реального бота написал

Скорее накапал, и судя по всему по-пьяни.

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

Посты странные, но я бы не сказал, что так уж на бота похоже. На больного больше - я шизофреника в метро видел, который примерно подобным образом и разговаривал.

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

если объем передаваемых данных больше размера буффера?

А никак, только с обратной стороной, вроде.

Как ты их сммаппишь в одно?

зачем нужен FILE когда есть обычные дескрипторы? (комментарий) - я тут писал как это должно работать. Т.е. что мешает взять любой длинны буфер, заммапленный в мой адресспейс? Ничего.

Пайпы так-то нахрен не нужны, когда надо передавать большой кусок - они нужны в юзкейсе синхронно передал->прочитал->передал->прочитал. Ну и как кастыли, когда надо сграбить какой-то stdout.

Поэтому их нет смысла заменять на любой длинны буфер через шаредмем, ибо один хрен нужна синхронизация.

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

Я просто болтал с A.L.I.C.E в свое время. Как по мне, так она ему проигрывает. Как-то странно увидеть такого бота на ЛОРе.

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

Вот код, работает столько же сколько и read

Работает быстрее, на локалхост хардах с трупутом 50мбс одинакого. Но там что угодно будет работать так же, даже брайнфак.

//const int file_size=1048576000;


static inline uint64_t file_size(int fd) {
  struct stat st;
  fstat(fd, &st);
  return st.st_size;
}

int main(int argc, char **argv) {
  int fd = open(argv[1], O_RDONLY);
  uint64_t fsize = file_size(fd);
  uint32_t * it = mmap(0, fsize, PROT_READ, MAP_PRIVATE | MAP_POPULATE, fd, 0), * end = it + fsize/4, cksum = 0;
  while(it != end) cksum += *it++;
  fprintf(stderr, "cksum = %u\n", cksum);
}
anonymous
()
Ответ на: комментарий от kawaii_neko

Иди уже померяй, чтобы не тявкать попусту.

Понимаешь в чем разница - я Царь, ты нулёвый балабол. В любом случае ты будешь смешан с говном.

«Бенчмарк» для read я привел.

Ты должен привести бенчмарк ридвсммап, если ты кукарекаешь, что рид быстрее ммап. Всё просто.

Для mmap напиши самостоятельно, чтобы не позорить анонимусов.

Скорее всего просто не осилилось.

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

Ты пишешь говно, я правильно понял?

О5 юлёж.

Очевидно, что там есть statement'ы, которые не канают по твоему шаблону. Код можешь сам нагуглить, это же opensource.

И?

case L_STDERR:
	case L_LOGFILE:
		current = time(NULL);
		(void)strftime(tstamp, sizeof(tstamp), LOG_TIME_FORMAT, localtime(&current));
		fprintf(log_file_fd, "[%s] %s (%d): %s\n", tstamp, log_ident, getpid(), buff);
		fflush(out);
		break;

Так сделать не осилось?

А почему не FILE?

Потамучто тормазное, непредсказуемое уродское говно, не? А почему не fd?

Давай по-другому: тебя по месту работы никто еще в ссаные тряпки носом не тыкал?

Понимаешь в чем штука - я Царь. Кто меня будет тыкать, нуль навроде тебя?

И помимо stdout других файлов, куда можно\нужно выдать форматированный вывод, конечно же, нет.

Нету. Я не пишу школотрон код с текстовым говном. А вот нули пишут и ведь не потаму что текст «удобен», а потамучто нули.

Куча других копирует. Тебя же это не смущает. Или смущает, и ядром ты тоже крайне недоволен?

Причём тут другие, почему балаболы всегда за кем-то прячатся?

Ты начал кукарекать, что без копирования никак, только один адресспейс, а вот оно как оказалось - обосрался. ммап не копирует и адресспейсы разные. Зачем ты съехал на другое?

И да, всё копирование в ядре параша.

Чем принципиально отличается read от какого-нибудь fgets в случае c /proc/modules? Только наличием буфера?

Какой нахрен фгетс - это параша вообще для аутистов. И причем тут фгетс и как он связан с ридом? Мб ты спутал с фридом?

Отвечу - да, наличием мне нужной непредсказуемой параши, да и вообще нахрен не нужной в 100% юзкейсов, если твой уровень выше первоклашки. Уродским FILE *, ублюдскими 4-мя аргументами и прочей хернёй.

У меня есть фдешка - есть память. Мне нахрен не упёрлись всякие стримопараши и какие-то блоки или что там во фридпараши.

Строго говоря, в данном случае даже все эти вызовы необязательны - несколько строчек шелла все вызовут за тебя и покажут... Что там было? Путь до файла модуля?

Строго говоря - это пример. Меня не интересуют ни твои шелы, ни прочее говно.

Что-то не заметил кардинальных изменений ни в работе сокетов, ни в работе тех же пайпов.

Ну дак на локалхосте с трупутом 20-30кбпс конечно не заметишь. http://info.iet.unipi.it/~luigi/netmap/

Пайпы нахрен никому не упали. Это банальный синхрообен месагами и делать что-то с ним нет смысла, ибо блокируемый.

Есть такая херня как шаредмем уже сотню лет как изобретена.

Документация десятилетней давности все так же к ним подходит.

Естественно, ибо как были парашей так и остались.

Бинарный код? Дизассемблирование? Ты о чем вообще?

Бинарь. Понимаешь - когда я пишу/читаю из файла мне там нахрен не нужен тест - я пишу и читаю бинарь, ибо я не аутист. Бинарные логи, бинарные дампы, банарные форматы/протоколы, окда?

Ты хотел сказать «ЧСВ»?

Нет, я сказал то, что хотел.

Дашь посмотреть, что ты умеешь? Ну там сорцы проектов каких-нибудь?

Для начала выкати свой пруфец компетентности в оценки моего кода, а так радомным нулям что-то линковать я не обязан.

Если ты хочешь увидеть разницу между нами - вперёд, лорбатл создан для тебя. Придумываешь конкретную задачу - пилим, ты обсираешься - расходимся.

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