LINUX.ORG.RU

Нужна помочь владельцев core2 в измерении производительности программы

 , , ,


0

3

Есть программа.

#include <boost/hana.hpp>
#include <limits>
#include <array>
#include <sys/mman.h>
#include <unistd.h>
#include <cassert>
#include <filesystem>
#include <string_view>
#include <vector>

namespace hana = boost::hana;
namespace fs = std::filesystem;

using namespace hana::literals;

using sv = std::string_view;

using hana::_;


constexpr uint8_t swmap(uint8_t c) {
  switch(c) {
    case 'A': case 'a': return 'T';// 'A' | 'a' => 'T',
    case 'C': case 'c': return 'G';// 'C' | 'c' => 'G',
    case 'G': case 'g': return 'C';// 'G' | 'g' => 'C',
    case 'T': case 't': return 'A';// 'T' | 't' => 'A',
    case 'U': case 'u': return 'A';// 'U' | 'u' => 'A',
    case 'M': case 'm': return 'K';// 'M' | 'm' => 'K',
    case 'R': case 'r': return 'Y';// 'R' | 'r' => 'Y',
    case 'W': case 'w': return 'W';// 'W' | 'w' => 'W',
    case 'S': case 's': return 'S';// 'S' | 's' => 'S',
    case 'Y': case 'y': return 'R';// 'Y' | 'y' => 'R',
    case 'K': case 'k': return 'M';// 'K' | 'k' => 'M',
    case 'V': case 'v': return 'B';// 'V' | 'v' => 'B',
    case 'H': case 'h': return 'D';// 'H' | 'h' => 'D',
    case 'D': case 'd': return 'H';// 'D' | 'd' => 'H',
    case 'B': case 'b': return 'V';// 'B' | 'b' => 'V',
    case 'N': case 'n': return 'N';// 'N' | 'n' => 'N',
    default: return 0;
  }
}

constexpr auto map = ([] {
  constexpr auto max = std::numeric_limits<uint8_t>::max();
  std::array<uint16_t, max * max> map{};
  for(size_t it = 0; it < map.size(); ++it) {
    uint8_t hi = (it >> 8), lo = it;
    map[it] = (swmap(lo) << 8) | (swmap(hi));
  }
  return map;
})();

constexpr auto map256 = ([] {
  constexpr auto max = std::numeric_limits<uint8_t>::max();
  std::array<uint8_t, max> map{};
  for(size_t it = 0; it < max; ++it)
    map[it] = swmap(it);
  return map;
})();

template<size_t noffset> void replace60(const char * in, char * out) {
  constexpr auto offset = hana::llong_c<noffset>;
  
  auto op = [&] {
    *(uint16_t *)out = map[*(const uint16_t *)(in -= 2)];
    out += 2;
  };
  
  auto tail_size = ((60_c - offset) / 2_c);
  tail_size.times(op);
  
  if constexpr(offset % 2_c) {
//   ...1\n  
//   0...  
    *out++ = map256[*(--in)];
    --in;
//     assert(*in == '\n');
    *out++ = map256[*(--in)];
    (29_c - tail_size).times(op);
  } else {// even
//   ...\n  
//   ...  
    in -= 1;
//     assert(*in == '\n');
    (30_c - tail_size).times(op);
  }
  *(out++) = '\n';
}

auto select_replace60 = [](std::string_view in) {
  constexpr static auto replace60_map = ([] {
    std::array<decltype(replace60<0>) *, 60> map{};
    (60_c).times.with_index([&](auto index) {
      map[index()] = replace60<index()>;
    });
    return map;
  })();
  
  auto first_pos = size(in) - 1;
  assert(in.at(first_pos) == '\n');
  
  auto diff = first_pos - in.find_last_of('\n', first_pos - 1);
  assert(in.at(size(in) - diff - 1) == '\n');
  
  return replace60_map.at(61 - diff);
};


void replace(sv data) {
  auto op = select_replace60(data);
  constexpr size_t line_size = 61;
  constexpr size_t buff_size = line_size * 1024;
  char buff[buff_size] = {};
  auto n = size(data) / line_size;
  auto tail = size(data) - (n * line_size);
  
  auto it = end(data) - 1;
  auto buff_it = std::begin(buff);
  
  while(n--) {
    op(it, buff_it);
    buff_it += line_size;
    it -= line_size;
    if(buff_it == (std::end(buff) - line_size)) {
      write(STDOUT_FILENO, buff, buff_size - line_size);
      buff_it = buff;
    }
  }
  if(tail) {
    while(tail--) {
      if(*(--it) == '\n') continue;
      *buff_it++ = map256[*it];
    }
    *buff_it++ = '\n';
  }
  write(STDOUT_FILENO, buff, buff_it - std::begin(buff));
}

template<typename F> __attribute_noinline__ auto bench(std::string_view name, F && f, size_t setsize) {
  auto start = std::chrono::high_resolution_clock::now();
  f();
  auto tp = std::chrono::high_resolution_clock::now() - start;
  auto time = std::chrono::duration<double>{tp}.count();
  fprintf(stderr, "%s: %fsec, %fGB/s\n", name.data(), time, (setsize / double(1ul << 30)) / time);
}

int main() {
  
  fs::path path{"/dev/stdin"};
  auto size = fs::file_size(path);
  auto data = (const char *)mmap(nullptr, size + 4096, PROT_READ, MAP_PRIVATE|MAP_POPULATE, STDIN_FILENO, 0);
  sv file{data, size};
  
  auto next = [=, prev = 0ul]() mutable -> std::pair<sv, sv> {
    auto arrow_pos = file.find_first_of('>', prev);
    auto begin_pos = file.find_first_of('\n', arrow_pos);
    if(begin_pos == sv::npos) return {};
    prev = file.find_first_of('>', begin_pos);
    return {file.substr(arrow_pos, begin_pos - arrow_pos + 1), file.substr(begin_pos + 1, prev - begin_pos - 1)};
  };
  
  std::vector<std::pair<sv, sv>> index;
  for(auto pair = next(); pair != std::pair<sv, sv>{}; pair = next()) index.emplace_back(pair);
    
  
  for(auto [name, data]: index) {
    write(STDOUT_FILENO, std::data(name), std::size(name));
    bench("replace", [data = data] { replace(data); }, data.size());
  };
}
 

Есть вторая программа: https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/revcomp-g...

Нужно сравнить их, собирать так(нужен буст) и gcc8.3 или новее.

g++ -Ofast -march=native -fwhole-program -std=gnu++2a -lstdc++fs main.cpp -o prog_name

Для того, что-бы забенчить - нужно взять этот код: https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/fasta-gcc... Записать в fasta.c

Собрать так:

gcc -pipe -Wall -O3 -fomit-frame-pointer -march=native -fopenmp fasta.c -o fasta

Далее, нужно сделать следующие:

./fasta 100000000 > fasta_100000000.txt


time ./первая_программа 0 < fasta_100000000.txt > /dev/null

time ./вторая_программа 0 < fasta_100000000.txt > /dev/null

Запустить надо по 2-3 раза. Результаты напечатать сюда.



Последнее исправление: freddie_sadler (всего исправлений: 1)

Ответ на: комментарий от vertexua

Какой же нелепый клоун. Вначале он кукарекал, что программа не работает. Тепеперь оказалось, что работает и лишь не завершается корректно. Где оправдания? Я не слышу.

И да, клоун. Где воспроизведение ошибки?

Каким боком, рукожоп? У него целая убунта 19я работает и ничего не падает, только твоя програмулина на 100 строчек свалилась в корку.

Пруфы, клоун.

Была бы у него какая-то жопа в libс, он бы тебе на коммент не мог бы ответить.

Причём тут libc?

Факт есть фактом, все рухнуло к чертям, чего бы не случилось в Rust.

Бегом побежал показывать. Я тебе даже позволяю украсть мой код(сами вы ни на что не способны). Показывай тоже самое, но не падающие. Вперёд. Не показал - трепло.

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

Ладно, у меня сейчас нету времени с этим разбираться. Позже я перепишу эту дристню под кору2 и добавлю многопоточность. Там уже посмотрим.

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

Забавно ты проигнорировал (и даже не один раз) этот вопрос:

Я тебе задал вопрос. Почему ты не сделал и почему подобные тебе клоуны ничего не сделали?

Как говорится, не ошибается тот, кто ничего не делает. Хотя, возможно, тебе, как любителю поработать своим язычком программирования на форуме, этот принцип и не знаком.

Если бы ты не боялся выкладывать сюда свой код, то твоя критика что-то да значила бы. А так – всего лишь еще один программист-философ.

goto-vlad
()

auto data = (const char *)mmap(nullptr, size + 4096, PROT_READ, MAP_PRIVATE|MAP_POPULATE, STDIN_FILENO, 0);

Ты же в своем бложике видел, что это неправильно. На файлах с размером, кратным 4096 будет Bus error (core dumped).

Кроме этого, если ты возьмешь данные не из файла, а из другого пайпа, это вообще может не работать.

Посмотри, что выдаст

$ cat file | ./tsar_prog
Deleted
()
Ответ на: комментарий от LongLiveUbuntu

@a1batross, баним не аккаунт, но человека? С каких пор такая херня творится?

Личную вендетту никто не отменял. Каждый Вахтеров Вахтер Вахтерович мнит себя царем и богом.

goto-vlad
()
Ответ на: комментарий от Deleted

Ты же в своем бложике видел, что это неправильно. На файлах с размером, кратным 4096 будет Bus error (core dumped).

Нет, ты обделался. В школу.

Кроме этого, если ты возьмешь данные не из файла, а из другого пайпа, это вообще может не работать.

Это не пайп, опять несёшь херню? Тебе уже сообщили об этом. К тому же, твой пайп говна никому ненужен.

Посмотри, что выдаст

С чего оно должно что-то выдавать? С того, что ты клоун, который несёт херню?

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

Но в этом не лежит моя стратегия. Я только подначиваю царя на разную трудозатратную фигню «а чё не пацан, не можешь 500 раз присесть?», «слабо воду из вазы с цветами выпить?». А так как у него проблемы с самоутверждением, ему нужно сразу доказывать какому-то чуваку. Я чё, шел мимо, ляпнул «слабо» потратив 1 секунду - царь сидит на шутаут неделю пытается свое говно закинуть, чтобы показать этим всем растоадептам. Ну иногда чуть масла в огонь подливаю

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от vertexua

А так как у него проблемы с самоутверждением, ему нужно сразу доказывать какому-то чуваку.

Эта закомплексованная бездарность и её потуги к самоутверждению. Очевидно, что бездарность пытается выдать свои фантазии за реальность.

В реальности же я декларировал умножение на ноль этих бенчмарков говна как один из множество целей блога и моей публичной деятельности. Это было зафиксировано много лет назад.

Тоже самое касается и закидывания. Когда я пытался закинуть в прошлый раз - оно закидывалось через какое-то говно, а сейчас там гитлаб. Мне несложно закинуть через гитлаб, раз всё изменилось.

К тому же, даже тут ты запутался в показаниях. Закинуть я захотел уже после того как написал пост в блог. В противном случае я бы сразу делал под говно.

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

Запустил, всё норм: https://imgur.com/a/TphhSI1

Как и у тебя. Единственное отличие, только в том что я удаляю

|MAP_POPULATE

так как на маке его нет.

mac mini late 2009, core2 duo 2.26

входные отсюда: https://salsa.debian.org/benchmarksgame-team/benchmarksgame/blob/master/publi...

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от vertexua

Так Rust для тебя

А кстати да, было бы неплохо, если бы он перешел на Rust. Очень ценное приобретение для комьюнити. Прирожденный хакер, с отличными навыками коммуникации.

С Царем бы дело растеризации планеты пошло гораздо быстрее.

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

Я только подначиваю царя на разную трудозатратную фигню «а чё не пацан, не можешь 500 раз присесть?», «слабо воду из вазы с цветами выпить?».

На этом сайте это любят называть «троллинг тупостью». Тебе с этим в talks-раздел, но никак не в Development, тут люди хотя бы иногда пытаются вести предметное обсуждение.

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

goto-vlad
()
Ответ на: комментарий от fsb4000

Спс. Перепишу с оптимизациями под кору2 и многопотоком. Возможно и у него пройдут падения.

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

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

Когда тебе сходу орут «побежал мразь показывать», то единственное что каждый уважающий себя человек должен сделать, это этому козлу принципиально больше ничего не показывать. Я теперь тщательно слежу чтобы царю случайно не ответить по делу

С нормальными людьми веду нормальные технические беседы. Если на ЛОРе не со вчера, знал бы. Я в девелопменте очень давно

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Когда тебе сходу орут «побежал мразь показывать», то единственное что каждый уважающий себя человек должен сделать, это этому козлу принципиально больше ничего не показывать. Я теперь тщательно слежу чтобы царю случайно не ответить по делу

Клоун нелепый. Ты ничего не показал и тебя послали показывать. С чего ты решил, что ты можешь мне что-то ответить? Было бы что ответить - смог бы. А так ты был смешан с дерьмом и теперь из ямы слышны оправдания.

С нормальными людьми веду нормальные технические беседы. Если на ЛОРе не со вчера, знал бы. Я в девелопменте очень давно

Полы мыл много? Какие беседы ты ведёшь, где, клоун? Ты блеял херню, потом я приходил и ты убегал рыдая. Так было, так будет.

Сколько ты там полы моешь - никого не волнует. Мой хоть тысячу лет - ноль останется нулём, на сколько его ни умножай.

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

Там проблема в том, что она у него не падает. Она выдаёт правильные результаты и падает в конце. А раз выдаёт правильные результаты, то там после них исполняются пару строк + деструктор вектора.

На чём оно там падает - решительно непонятно. Я даже предположить не могу. Либо врайт читает дальше(но тогда бы он консоль засрал), либо в index попал мусор, либо деструктор вектора зафакапился.

А возможно там у него версия буста какая-нибудь тухлая и оно срёт что-то в глобалы.

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

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

Для нормальных людей в порядке вещей не обращать внимание на тех, кто им неприятен (или, возможно, тех кто когда-то «слил» их в споре), а не бегать за «объектом обожания» с Gillette у рта, тем самым засирая форум своими «В его игрушечной наколенной программе ошибка! Хаха! ROFL! LMAO! ROFLMAO!»

Если на ЛОРе не со вчера, знал бы. Я в девелопменте очень давно

Может, в 1967 ты и давал жару на этом форуме, я не знаю, но в последнее время от тебя одни срачи с анонимами, которые потом оперативно трутся или же беспредметные философствования на тему программирования. Поэтому когда Царь или кто-то ещё выкладывает код для объяснения или обсуждения чего-то, то это воспринимается как глоток свежего воздуха, из кода других людей можно чему-то научиться, из твоих форумных войн – нет, увы.

goto-vlad
()
Ответ на: комментарий от vertexua

из кода других людей можно чему-то научиться

О, интересно, чего ты научился у царя?

Являясь адептом чистого C, который последний раз имел дело с C++11, лично меня его код побудил на более плотное изучение нововведений C++ в свободное время. Видел ещё как минимум один подобный комментарий от другого человека.

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

goto-vlad
()
Ответ на: комментарий от goto-vlad

Являясь адептом чистого C

Ну тут я согласен, мы настолько не пересекаемся что вряд-ли бы ты что-то научился

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

Ну тут я согласен, мы настолько не пересекаемся что вряд-ли бы ты что-то научился

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

В этом и был смысл моего сообщения – javascript-программистов ты, может, и можешь чем-то удивить, а сишников – нет.

goto-vlad
()
Ответ на: комментарий от goto-vlad

javascript-программистов ты

Я не пишу на JavaScript. На работе - ни строчки за… 8 лет.

Я как раз о фронтенде, как ты сказал, впустую философствую. Просто в свободное время играюсь с этим делом.

Я вообще в облачной инфраструктуре работаю если что, если обьяснять по-простому. Не совсем точно, но приблизительно так

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Я вообще в облачной инфраструктуре работаю если что, если обьяснять по-простому. Не совсем точно, но приблизительно так

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

goto-vlad
()
Ответ на: комментарий от fsb4000

Ну вообщем началось там у этого идиота старая песня.

The gcc version won't be changed until I upgrade to Ubuntu 19.10.

Почему же эта падаль ставит последние версии всяких говнорустов? А гцц эта мразь обновлять не хочет? Да, просто ахренеть какие доводы.

У него действительно древняя версия буста

Version: 1.67.0.1

Возможно это причина. Как же меня одалевает этот идиот. Откуда я знаю какая версия стоит в твоей убунте для домохозяек? Меня не должно это волновать.

Ладно, насрать до тех пор, пока не появится моя новая версия. Я там напишу идиоту как собирать - авось он осилит.

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

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

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

Мне кажется ты сфокусировался на моих разговорах с царем. А не с нормальными людьми. С царем да, просто троллю иногда. Не отвечаю ни на один вопрос по делу

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

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

Это не поддаётся осознанию.


rustc 1.38.0 (625451e37 2019-09-23)
LLVM version: 9.0


Thu, 26 Sep 2019 16:44:58 GMT

Это мразь бенчила 26 сентября, а говнораст у него от 23 сентября. У него не просто последняя версия - у него лайв-версия. Причём разница 3 дня. 3 дня.

Тупорылые ублюдки и их подсосы.

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

Это мразь бенчила 26 сентября, а говнораст у него от 23 сентября. У него не просто последняя версия - у него лайв-версия. Причём разница 3 дня. 3 дня.

Боишься слить лайф расту? Так прогресс раста скаканул по сравнению с плюсами за несколько дней? )

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

Почему же эта падаль ставит последние версии всяких говнорустов?

Потому что это очень легко. rustup update. Это тебе не пол системы менять как с gcc

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

Боишься слить лайф расту? Так прогресс раста скаканул по сравнению с плюсами за несколько дней? )

Какому лайф, клоун? У него там гцц двухлетней давности, который не может в нужные фичи и он не хочет этого менять.

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

Потому что это очень легко. rustup update. Это тебе не пол системы менять как с gcc

Полная чушь. Почему у меня ничего ненужно? К тому же - без проблем он ставится и эта мразь явно это пишет, но при пишет, что она «не будет», а не «не может».

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

Так gcc два года назад был говном, а теперь стал прекрасен?

Вот давай по другому обьясню. Ты не можешь подняться над ситуацией и понять кое-что. Если у тебя код крешится при переносе в другие условия и это все навсего консольный алгоритм, то что-то тут не так.

Так же как и твой алгоритм - упорщенная модель сложной системы. Так и ситуация - модель более сложной ситуации.

А именно когда рукожоп что-то пишет, это выкатывают на прод, оно падает с сегфолтом. Потом рукожоп причит «ой, не понятно что упало и инструментов узнать нет». Джава бы упала со стектрейсом. Rust с unwind в худшем случае. А код рукожопа делает core dumped.

Именно потому плюсы заказаны много где, а не потому что на них потенциально нельзя нормально написать. Те же LLVM и java на нем написаны, путем лет заливания крови людей в этот код

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

Ты еще не понял что у него одна тачка там. Он не может ради твоих выкрутасов «gnu++2a», хотя 20-е еще не наступили обновлять себе ОС.

Бегом выкашивай свой буст (чтобы не кричать потом что там баги) и пританцовки из будущего. Не может в конце концов С++ быть так плох, что без 2a нельзя написать бенчмарк

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от anonymous

Я просто мимо проходил, но у меня твоя программа падает если ей скормить этот файл из 2-ух строчек:

>ONE Homo sapiens alu
GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA
>ONE Homo sapiens alu
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string_view::at: __pos (which is 18446744073709551615) >= this->size() (which is 61)
anonymous
()
Ответ на: комментарий от anonymous

Чувак, он оптимизирует один параметр - скорость. Он не пишет нормальный код, он пишет олимпиадную задачку без проверок. Таким образом хочет перегнать языки где проверки встроены. Если встроеные проверки отключить - он закричит что это теперь «сишка».

Эти все приседания тупые, потому что он пытается доказать что раст с проверками медленнее плюсов без проверок. Во открытие века.

В рамках этих приседаний важные вещи для реальной разрабокти софта идут в трубу

Upd: не в этом случае, тут наоборот проверка есть

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от anonymous

Она не падает - твоя портянка не имеет корректный формат. То, что у других это не падает - они это не проверяют. Каждая строка должна заканчиваться '\n'

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

Наверное проблема не просто в версиях, а в версиях + архитектуре проца...

Проверил на OrangePi Lite2, там Armbian(Debian) 10 с gcc 8.3 и boost 1.67. Всё тесты работают...

fsb4000 ★★★★★
()
Ответ на: комментарий от vertexua

Собственно, всё что нужно знать об этой бездарности. Он опять нырнул в дерьмо.

Он не пишет нормальный код, он пишет олимпиадную задачку без проверок.

Показывай проверки в говнорасте, вперёд клоун. Иди отключай. Чего сидишь? Иди побежай. Чего же ты в говне?

Эти все приседания тупые, потому что он пытается доказать что раст с проверками медленнее плюсов без проверок. Во открытие века.

И теперь финалочка. Именно моя программа как раз таки и содержит проверки на корректность формата и падает она именно из-за проверок.

И теперь вопрос. Каким образом можно уродиться настолько бездарным и тупым? Как можно так обсираться?

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

В том файле так и есть.
этот файл из 2-ух строчек:

Ты путаешься в показаниях. Строки должно быть три. 2 с данными и одна пустая. У тебя же две.

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

Я вот не поленился и написал проверочный скрипт для Царской программы

#!/bin/bash

for ((i=4000;i<=20000;i++)); do
    ./fasta $i > fasta_$i.txt
    ./revcomp 0 < fasta_$i.txt > /dev/null
    echo $i
done

Да, SIGBUS словить не получилось (но это не значит, что его там не может быть, вот здесь https://tsar1997.blogspot.com/2019/10/blog-post_18.html он прилетал, не факт что Царь где-то опять не нарукожопил).

Но SIGABRT прилетают пачками.

Ну и вопросы про пайпы, конечно, остались.

$ cat fasta_5000.txt | ./revcomp 
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
  what():  filesystem error: cannot get file size: Operation not supported [/dev/stdin]
Aborted (core dumped)

Чуваку, который заведует этими тестами, не позавидуешь, конечно. Представляю что ему там дуничи типа нашего Царя присылают

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

Да этот клоун у себя в бложике огородился так, что самому злому вахтёру не осилить. Причём гнал на ЛОР за это. Скоро перейдёт на Ноду. Народная примета такая.

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

Да, SIGBUS словить не получилось (но это не значит, что его там не может быть, вот здесь https://tsar1997.blogspot.com/2019/10/blog-post_18.html он прилетал, не факт что Царь где-то опять не нарукожопил).

Клоун, я тебя там помножил на ноль. Тебе объяснили, клоун, что там он прилетает потому, что я поставил защиту, которую ты поймал.

И падало оно потому, что я читал по два байта.

Но SIGABRT прилетают пачками.

Показывай. Клоун, никаких SIGABRTнету, бездарность. Это специально созданные исключения.

Ну и вопросы про пайпы, конечно, остались.

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

дуничи

А, дак ты ещё дошколятина запартная. Нелепость позорная.

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

Вообщем, я посмотрел - с тремя строками она действительно не работает. Это особенность реализации.

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

А, я теперь понял почему ты был такой тупой с потугами про 4096. Я вначале думал, что у тебя есть мозг и ты аналитически вывел эту проблему, но ты просто как обезьяна пустил цикл.

Вопрос снят. Мне действительно было непонятно то, как человек способный увидеть ошибку может быть настолько тупым и лсным. Но теперь всё ясно. Ты её не увидел, а случайно поймал. Причём поймал потому, что я тебе позволил это сделать. Молодец.

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