この質問のフォローアップとして、私は不必要なシステムコールなしで効率的な問題でファイル名のみをリストするGoプログラムを作成しようとしています。これは私がこれまで持ってきたものです:
package main
import (
"os"
"fmt"
"log"
)
func main() {
// Open directory and check for errors
f, err := os.Open(".")
if err != nil {
log.Fatal(err)
}
// Get file names
files, err := f.Readdirnames(0)
if err != nil {
log.Fatal(err)
}
// Print files
fmt.Print(files, "\n")
}
ただし、を実行するstrace
と、次の多くが表示されます。
clock_gettime(CLOCK_REALTIME, {1406822401, 824793686}) = 0
それは何に関係していますか?このコードをより効率的にするにはどうすればよいですか?
私はつまらないですが、それはGoの組み込みスケジューラとガベージコレクションに関連していると思います。
簡単に言えば、goはCほど高速ではありません。Cにはないランタイム機能がすべて追加されているためです。
リストしたコードは、おそらくGoでやりたいことを行う最も速い方法です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加