Optimize MLRow/MLValue

Description

Currently MLValue is a scala object with fairly high overhead (case class + Option[]). For the common case where features are dense or sparse floats/doubles, this is overkill. Avoid materializing these values whenever possible, and optimize common mathematical operations across them (.toVector should probably just be a pointer dereference) for both sparse and dense data.

Assignee

Evan Sparks

Reporter

Evan Sparks