twitter/summingbird — pull request #323 by ryanlecompte (2013-10-23 20:26:37+00:00)
Title: Change depthFirstOf to use List instead of Vector

I noticed that `depthFirstOf` is always called with a `toList` following it. I performed a quick Thyme benchmark between using `Vector` for appends vs. constructing a `List` and finally calling `.reverse` on it:

```scala
scala> th.pbench { (0 to 1000).foldLeft(List.empty[Int]) { case (xs, i) => i :: xs }.reverse }
Benchmark (163820 calls in 4.485 s)
Time: 20.60 us 95% CI 19.58 us - 21.62 us (n=20)
Garbage: 6.519 us (n=423 sweeps measured)

scala> th.pbench { (0 to 1000).foldLeft(Vector.empty[Int]) { case (v, i) => v :+ i } }
Benchmark (81900 calls in 4.628 s)
Time: 42.28 us 95% CI 40.25 us - 44.31 us (n=20)
Garbage: 13.65 us (n=580 sweeps measured)
```

Also, later calling `toList` on the `Vector` is probably not very cheap. I am not sure how often `depthFirstOf` gets called in typical summingbird workflows, but I figured it couldn't hurt. summingbird-core tests pass on my machine with these updates.