architecture-lab3
Опишу на русском, думаю вы не возражаете ;)
Нас по сути интересует следующая картина, мы читаем из файла и сразу же пишем в него,
пока не закончится следующее предложение.
Выходит, что нам нужно держать в памяти всего лишь два байта!
Как только мы встречаем байт, который будет равен " ", то следует проверить,
а не равняется ли предыдущий байт [!?.] чему-то из этого.
Ага, только лишь всего, один процесс, за раз в память в держит 2 байте,
но это в теории, потому что на деле, как я понял, их 3, так как один байт еще идет
на буффер для записи в файл. Это теоретический подсчет,
НО
эти подсчеты почти не релеванты,
так как я не учел объем хранимого, исполняемого кода горутины, недавно я познакомился с профилированием
и как оказалось, вещь довольно прикольная, и Слава Аллаху, есть такой встроенный пакет в Go.
https://golang.org/pkg/runtime/pprof/
я еще нашел парочку статей на хабре, как они это делают, но у меня чет не выходит :(
пока оставлю такой вариант, если я что-то придумаю до Воскресенья, то залью сюда,
но надеюсь идею вы мою поняли, надо увидеть сколько потребляет одна рутина оперативной памяти и тогда мы поймем, сколько параллельно за раз, таких рутин может рабоать (отталкиваясь от объема памяти машины)
ошибка у меня такая идет(((
`
go tool pprof process
process: parsing profile: unrecognized profile format
failed to fetch any source profiles
`
UPD
https://flaviocopes.com/golang-profiling/
script to create new file
for i in {000..100}; do echo Hi, I am John, and what is your name? > "File${i}.txt"; done
Seems like I have ~20 opended files limit :(
https://ttboj.wordpress.com/2015/07/27/golang-parallelism-issues-causing-too-many-open-files-error/
open input/File1152.txt: too many open files