file_put_contents()
에 해당하는 것은 무엇입니까? 그러나 GO의 내장 및 패키지의 조합을 사용하여 동일한 기능을 달성 할 수 있습니다. 가장 효율적인 접근법은 특정 사용 사례에 따라 다릅니다. 간단한 파일 쓰기의 경우 (go 1.16에서 감가 상승, 대신)는 간결한 솔루션을 제공합니다. file_put_contents()
를 사용하여 항상 잠재적 오류를 처리해야합니다. 이것은 os
의 다양한 모드와보다 강력하고 유연한 모드를 제공합니다. io
대형 파일을 디스크에 작성하기위한 GO 코드를 최적화하려면 시스템 호출을 최소화하고 데이터를 적절하게 버퍼링하는 것이 포함됩니다. 주요 최적화 전략은 다음과 같습니다.
ioutil.WriteFile os.WriteFile
버퍼링 된 쓰기 :
<code class="go">import ( "os" "io/ioutil" // Or os for newer Go versions ) func main() { data := []byte("This is some text.") err := os.WriteFile("my_file.txt", data, 0644) // 0644 sets permissions if err != nil { panic(err) // Handle errors appropriately - see next section } } </code>인터페이스 및 버퍼 (예 : )를 사용하여 데이터를 축적하십시오. 이것은 시스템 호출의 수를 크게 줄여 성능을 크게 향상시킵니다.
os.OpenFile os.O_APPEND
<code class="go">import ( "os" ) func main() { file, err := os.OpenFile("my_file.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644) if err != nil { panic(err) // Handle errors appropriately } defer file.Close() data := []byte("This is appended text.") _, err = file.Write(data) if err != nil { panic(err) // Handle errors appropriately } }</code>
비동기 쓰기 : os.O_CREATE
매우 큰 파일의 경우 goroutines와 채널을 사용하여 글쓰기를 동시에 수행하는 것을 고려하십시오. 이를 통해 글쓰기가 백그라운드에서 발생하는 동안 프로그램이 데이터 처리를 계속할 수 있습니다. 그러나 이것은 복잡성을 추가하고 진정으로 대규모 파일 및 I/O 바운드 작업을 처리하지 않는 한 항상 중요한 성능 향상을 제공하지는 않을 수 있습니다. if err != nil
올바른 데이터 구조를 선택하면 파일에 쓰기 전에 메모리의 효율적인 데이터 구조를 선택하면 속도가 향상 될 수 있습니다. 예를 들어, 문자열에 반복적으로 추가하는 대신 큰 문자열을 구축하는 데 더 효율적인 file_put_contents()
를 사용합니다.
os
io
if err != nil
레트리 메커니즘 (옵션) : 과도 오류 (예 : 임시 문제를 고려) 즉각적인 실패. fmt.Errorf
defer file.Close()
매우 고성능 요구 사항 또는 특정 하드웨어 최적화의 경우 I/O 운영에 대한 수준의 제어를 제공하는 라이브러리를 탐색 할 수 있지만 일반적으로 특수 시나리오에서만 필요합니다. 이러한 라이브러리에는 종종 더 복잡한 구성과 사용이 포함됩니다. 위 내용은 언어를 효율적으로 작성하여 파일을 작성하십시오 : php file_put_contents ()와 동등한 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!