Skip to content

Instantly share code, notes, and snippets.

@haltcase
Created June 1, 2018 17:01
Show Gist options
  • Save haltcase/8884d5bb845c782e71fd5fa72783afa7 to your computer and use it in GitHub Desktop.
Save haltcase/8884d5bb845c782e71fd5fa72783afa7 to your computer and use it in GitHub Desktop.
glob perf test
import os, ospaths, future, times
import src/glob
proc touchFile (path: string) =
let (head, _) = path.splitPath
head.createDir
var f = open(path, fmWrite)
f.write("")
f.close
proc createStructure (dir: string, files: seq[string]): () -> void =
dir.removeDir
dir.createDir
for file in files:
touchFile(dir / file)
result = () => removeDir(dir)
let cleanup = createStructure("__opt__", @[
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "a" / "b" / "c" / "d" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "1" / "2" / "3" / "4" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "e" / "f" / "g" / "h" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "5" / "6" / "7" / "8" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file2.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file3.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file4.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file5.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file6.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file7.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file8.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "deeper_er" / "file9.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file1.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file2.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file3.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file4.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file5.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file6.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file7.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file8.nim",
"deep" / "dir" / "deeper" / "even_deeper" / "file9.nim",
"deep" / "dir" / "deeper" / "file1.nim",
"deep" / "dir" / "deeper" / "file2.nim",
"deep" / "dir" / "deeper" / "file3.nim",
"deep" / "dir" / "deeper" / "file4.nim",
"deep" / "dir" / "deeper" / "file5.nim",
"deep" / "dir" / "deeper" / "file6.nim",
"deep" / "dir" / "deeper" / "file7.nim",
"deep" / "dir" / "deeper" / "file8.nim",
"deep" / "dir" / "deeper" / "file9.nim",
"deep" / "dir" / "file1.nim",
"deep" / "dir" / "file2.nim",
"deep" / "dir" / "file3.nim",
"deep" / "dir" / "file4.nim",
"deep" / "dir" / "file5.nim",
"deep" / "dir" / "file6.nim",
"deep" / "dir" / "file7.nim",
"deep" / "dir" / "file8.nim",
"deep" / "dir" / "file9.nim",
"not_as" / "deep1.jpg",
"not_as" / "deep2.jpg",
"not_as" / "deep3.jpg",
"not_as" / "deep4.jpg",
"not_as" / "deep5.jpg",
"not_as" / "deep6.jpg",
"not_as" / "deep7.jpg",
"not_as" / "deep8.jpg",
"not_as" / "deep1.nim",
"not_as" / "deep2.nim",
"not_as" / "deep3.nim",
"not_as" / "deep4.nim",
"not_as" / "deep5.nim",
"not_as" / "deep6.nim",
"not_as" / "deep7.nim",
"not_as" / "deep8.nim",
"1" / "file.jpg",
"2" / "file.jpg",
"3" / "file.jpg",
"4" / "file.jpg",
"5" / "file.jpg",
"6" / "file.jpg",
"7" / "file.jpg",
"8" / "file.jpg",
"9" / "file.jpg",
"a" / "1" / "file.jpg",
"a" / "2" / "file.jpg",
"a" / "3" / "file.jpg",
"a" / "4" / "file.jpg",
"a" / "5" / "file.jpg",
"a" / "6" / "file.jpg",
"a" / "7" / "file.jpg",
"a" / "8" / "file.jpg",
"a" / "9" / "file.jpg",
"b" / "1" / "file.jpg",
"b" / "2" / "file.jpg",
"b" / "3" / "file.jpg",
"b" / "4" / "file.jpg",
"b" / "5" / "file.jpg",
"b" / "6" / "file.jpg",
"b" / "7" / "file.jpg",
"b" / "8" / "file.jpg",
"b" / "9" / "file.jpg",
"c" / "1" / "file.jpg",
"c" / "2" / "file.jpg",
"c" / "3" / "file.jpg",
"c" / "4" / "file.jpg",
"c" / "5" / "file.jpg",
"c" / "6" / "file.jpg",
"c" / "7" / "file.jpg",
"c" / "8" / "file.jpg",
"c" / "9" / "file.jpg",
"d" / "1" / "file.jpg",
"d" / "2" / "file.jpg",
"d" / "3" / "file.jpg",
"d" / "4" / "file.jpg",
"d" / "5" / "file.jpg",
"d" / "6" / "file.jpg",
"d" / "7" / "file.jpg",
"d" / "8" / "file.jpg",
"d" / "9" / "file.jpg",
"shallow1.nim",
"shallow2.nim",
"shallow3.nim",
"shallow4.nim",
"shallow5.nim",
"shallow6.nim",
"shallow7.nim",
"shallow8.nim",
"shallow9.nim"
])
let start = cpuTime()
discard listGlob("*.nim")
let stop = cpuTime()
echo stop - start
cleanup()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment