리소스를 사용하지 않고 Nano/VIM 편집

리소스를 사용하지 않고 Nano/VIM 편집

편집자가 대용량 파일에서 어떤 리소스를 검색하고 교체해야 하는지 아시는 분 계신가요? 내가 묻는 이유는 32개 코어 서버가 있기 때문입니다 HTOP.하나편집기를 사용하여 3GB 파일을 검색/바꾸면 코어가 100%입니다. 내 편집기 검색/바꾸기가 단일 스레드인지 궁금합니다. 그렇다면 이러한 작업이 너무 오래 걸리지 않도록 더 많은 리소스를 위임할 수 있는 방법이 있습니까? 작업에 25~30분이 소요될 때 31개의 유휴 코어와 1개의 100% 실행 중인 코어를 보면 실망스럽습니다.

아, 차이가 있다면 램은 32GB인데 캐시 포함해서 19GB를 사용하는군요.

답변1

편집기는 다중 스레드일 수도 있고 그렇지 않을 수도 있지만, 설사 그렇더라도 이 목적으로 스레드를 사용하지 않을 것입니다.표준 사용이는 의심할 여지 없이 개발자에게 문제를 일으키고 일부 기능을 손상시킬 수 있습니다.중요한 것으로 간주됩니다(표준 사용의 경우).

무한한 시간과 무한한 수의 프로그래머가 주어지면 모든 소프트웨어가 가장 작고 가장 관련 없는 세부 사항까지 미친 듯이 최적화되고 이러한 최적화가 영향 등에 부정적인 영향을 미치지 않도록 광범위하게 테스트된다는 것은 말할 필요도 없습니다. . 99.9%의 사용자가 결코 이해하지 못할 기능을 코딩하는 데 시간을 소비하고 싶어하는 사람은 없습니다. 특히 0.1%의 사용자가 망치를 사용하여 수프 캔을 열고 싶어하기 때문에 코딩하는 경우에는 더욱 그렇습니다.

일부 사람들이 지적했듯이 검색 및 바꾸기를 위해 3GB 파일을 텍스트 편집기에 로드하는 것은 다음과 같은 경우에는 괜찮습니다.오직검색하고 바꾸는 방법을 아는 방법은 텍스트 편집기를 사용하는 것입니다. 그런데, 이 말은 당신을 모욕하려는 것이 아니라 단지 당신에게 친근하게 다가가려는 것입니다. 이제 당신의 시야를 넓힐 시간입니다 ;)

답변2

대부분의 경우 편집기는 단일 스레드입니다. 파일을 32개 부분으로 분할한 다음 perl이나 sed와 같은 도구를 사용하여 검색하고 바꾸는 것이 더 나을 것입니다.

답변3

sed흐름 편집기를 봅니다 . 과 유사한 명령이 설정되어 있지만 vi파일을 처리하기 위해 읽는 대신 한 번에 한 줄씩 읽고 수정하고 씁니다(대부분의 경우 설명서를 확인하세요). 따라서 파일을 읽고(편집기는 복잡한 메모리 내 데이터 구조를 구축해야 함) 파일을 작성하는 데 걸리는 시간을 최소한 줄일 수 있습니다.

[현재 편집자들이 이러한 파일을 처리할 수 있다는 사실에 놀랐습니다. vi수십 KiB 크기의 파일을 처리할 때 원래 버전이 끔찍하게 충돌했던 것을 분명히 기억합니다... sic, transit gloria mundii . ]

답변4

3GB가 넘는 텍스트를 검색하고 바꾸는 것은 모든 편집자에게 어려운 작업입니다. 가장 좋은 해결책은 다음을 사용하는 것입니다.진주. 당신은 그것을 사용할 수 있습니다진주파일을 자동으로 더 작은 부분으로 분할하고 각 부분에 대해 정규식을 병렬로 실행합니다. 이것을 Perl로 코딩하는 방법에는 여러 가지가 있습니다. 나중에 예를 게시하겠습니다.

관련 정보