com.twitter.summingbird.planner

DagOptimizer

trait DagOptimizer[P <: Platform[P]] extends AnyRef

Source
DagOptimizer.scala
Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. DagOptimizer
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. type LitProd[T] = Literal[T, Prod]

  2. type Prod[T] = Producer[P, T]

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. object AlsoPullUp extends Rule[Prod]

    We can always push all Also nodes all the way to the bottom of the dag MergedProducer(AlsoProducer(t, a), b) == AlsoProducer(t, MergedProducer(a, b))

  7. object DiamondToFlatMap extends PartialRule[Prod]

    (a.

  8. object FlatMapFusion extends PartialRule[Prod]

    a.

  9. object FlatThenOptionFusion extends PartialRule[Prod]

    Combine flatMaps followed by optionMap into a single operation

  10. object KeyFlatMapToFlatMap extends PartialRule[Prod]

    If you can't optimize KeyFlatMaps, use this

  11. object MergePullUp extends PartialRule[Prod]

    (a ++ b).

  12. object OptionMapFusion extends PartialRule[Prod]

  13. object OptionToFlatMap extends PartialRule[Prod]

    If you don't care to distinguish between optionMap and flatMap, you can use this rule

  14. object RemoveIdentityKeyed extends PartialRule[Prod]

    Identity keyed producer is just a trick to make scala see methods on keyed types, they have no meaning at runtime.

  15. object RemoveNames extends PartialRule[Prod]

    Strip all the names.

  16. object ValueFlatMapToFlatMap extends PartialRule[Prod]

    If you can't optimize ValueFlatMaps, use this

  17. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  18. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  20. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  21. def expressionDag[T](p: Producer[P, T]): (ExpressionDag[Prod], Id[T])

    Create an ExpressionDag for the given node.

    Create an ExpressionDag for the given node. This should be the final tail of the graph. You can apply optimizations on this Dag and then use the Id returned to evaluate it back to an optimized producer

  22. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  23. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  24. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  25. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  26. def mkAlso[T, U]: (Prod[T], Prod[U]) ⇒ Prod[U]

    This makes a potentially unsound cast.

    This makes a potentially unsound cast. Since this method is only use in converting from an AlsoProducer to a Literal[T, Prod] below, it is not actually dangerous because we always use it in a safe position.

    Attributes
    protected
  27. def mkAlsoTail[T, U]: (Prod[T], Prod[U]) ⇒ Prod[U]

    Attributes
    protected
  28. def mkFlatMapped[T, U](fn: (T) ⇒ TraversableOnce[U]): (Prod[T]) ⇒ Prod[U]

    Attributes
    protected
  29. def mkIdentKey[K, V]: (Prod[(K, V)]) ⇒ Prod[(K, V)]

    Attributes
    protected
  30. def mkKeyFM[T, U, V](fn: (T) ⇒ TraversableOnce[U]): (Prod[(T, V)]) ⇒ Prod[(U, V)]

    Attributes
    protected
  31. def mkMerge[T]: (Prod[T], Prod[T]) ⇒ Prod[T]

    Attributes
    protected
  32. def mkNamed[T](name: String): (Prod[T]) ⇒ Prod[T]

    Attributes
    protected
  33. def mkOptMap[T, U](fn: (T) ⇒ Option[U]): (Prod[T]) ⇒ Prod[U]

    Attributes
    protected
  34. def mkSrv[K, T, V](serv: P.Service[K, V]): (Prod[(K, T)]) ⇒ Prod[(K, (T, Option[V]))]

    Attributes
    protected
  35. def mkSum[K, V](store: P.Store[K, V], sg: Semigroup[V]): (Prod[(K, V)]) ⇒ Prod[(K, (Option[V], V))]

    Attributes
    protected
  36. def mkTPNamed[T](name: String): (Prod[T]) ⇒ Prod[T]

    Attributes
    protected
  37. def mkValueFM[K, U, V](fn: (U) ⇒ TraversableOnce[V]): (Prod[(K, U)]) ⇒ Prod[(K, V)]

    Attributes
    protected
  38. def mkWritten[T, U >: T](sink: P.Sink[U]): (Prod[T]) ⇒ Prod[T]

    Attributes
    protected
  39. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  40. final def notify(): Unit

    Definition Classes
    AnyRef
  41. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  42. def optimize[T](p: Producer[P, T], rule: Rule[Prod]): Producer[P, T]

    Optimize the given producer according to the rule

  43. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  44. def toLiteral[T](hm: HMap[Prod, LitProd], prod: Producer[P, T]): (HMap[Prod, LitProd], LitProd[T])

    Attributes
    protected
  45. def toLiteral[T](prod: Producer[P, T]): Literal[T, Prod]

    Convert a Producer graph into a Literal in the Dag rewriter This is where the tedious work comes in.

  46. def toString(): String

    Definition Classes
    AnyRef → Any
  47. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  48. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  49. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped