¿Tiene Scala un rendimiento equivalente a C #?

Soy nuevo en Scala, y por lo que entiendo, el rendimiento en Scala no es como el rendimiento en C #, es más como selecto.

¿Tiene Scala algo similar al rendimiento de C #? El rendimiento de C # es excelente porque hace que escribir iteradores sea muy fácil.

Actualizar: Aquí hay un ejemplo de pseudo código de C # que me gustaría poder implementar en Scala:

public class Graph<T> {
   public IEnumerable<T> BreadthFirstIterator() {
      List<T> currentLevel = new List<T>();
      currentLevel.add(_root);

      while ( currentLevel.count > 0 ) {
         List<T> nextLevel = new List<T>();
         foreach( var node in currentLevel ) {
            yield return node;
            nextLevel.addRange( node.Children );
         }
         currentLevel = nextLevel;
      }
   }
}

Este código implementa un primer recorrido iterativo de la amplitud de una gráfica, utilizando el rendimiento, devuelve un iterador, de modo que las personas que llaman puedan atravesar la gráfica utilizando un bucle for regular, p. Ej .:

graph.BreadthFirstIterator().foreach( n => Console.WriteLine( n ) );

En C #, el rendimiento es solo azúcar sintáctica para facilitar la escritura de un iterador (IEnumerable<T> en .Net, similar aIterable en Java). Como iterador, se evalúa perezosamente.

Actualización II: Podría estar equivocado aquí, pero creo que todo el punto de rendimiento en C # es para que no tenga que escribir una función de orden superior. P.ej. Puedes escribir un bucle for regular o usar un método comoselect/map/filter/where En lugar de pasar a una función que luego atravesará la secuencia.

P.ej.graph.iterator().foreach(n => println(n)) en lugar degraph.iterator( n => println(n)).

De esta manera puedes encadenarlos fácilmente, por ejemplograph.iterator().map(x => x.foo).filter(y => y.bar >= 2).foreach(z => println(z)).

Respuestas a la pregunta(7)

Su respuesta a la pregunta