Readdirnames wasn't much better. Now using globbing and syscall.Unlink which take ~1minute 30seconds. It is much better, but still a long way from perl's sub-20 seconds.
package main import ( "fmt" "path/filepath" "syscall" ) func main() { upperDirPattern := "/var/spool/directory/*" matches, err := filepath.Glob(upperDirPattern) if err != nil { fmt.Println(err) } for _, file := range matches { syscall.Unlink(file) } } On Monday, December 4, 2017 at 12:50:54 PM UTC-5, Gabriel Forster wrote: > > What takes 18 seconds in a perl command: > perl -e 'for(<*>){((stat)[9]<(unlink))}' > > is taking almost 8 minutes with the following code. Any ideas how I can > speed this up? > > dir, err := os.Open("/var/spool/directory") > if err != nil { > fmt.Fprintf(w, "failed - " + err.Error()) > return > } > defer dir.Close() > > > files, err := dir.Readdir(-1) > if err != nil { > fmt.Fprintf(w, "failed - " + err.Error()) > return > } > > for _, file := range files { > if file.Name() == "." || file.Name() == ".." { > continue > } > > os.Remove("/var/spool/directory/" + file.Name()) > } > > > fmt.Fprintf(w, "success") > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.