Gremlin is indeed the query language but requires a gremlin engine. This is generally passing strings to the DB (which gives you advantages like pushdown-predecate, essentially DB-side filtering) but there is associated overhead with something like Cypher that is now serialised and very fast with the Bolt protocol
I believe Gremlin is just the query language. There is an original backend that implemented it, which might be what you are thinking has performance issues. But the query language intrinsically doesn’t have issues I don’t thinks.
Currently I work on a project with Neo4J and Cypher.
And I miss some of Gremlin tricks to optimize some graph traversals (for example to stop some sub-traversal when a given limit of matches have been reached).
While this isn't natively supported yet, there are some tricks to achieve something like this, either with using APOC Procedures for subqueries, or, if your expansion-stop case is based on labels, APOC's path expansion procedures.
https://neo4j.com/developer/kb/limiting-match-results-per-ro...
My point is not to criticize Cypher (at all). Its learning curve is perfect. And it covers most of the requirements really well with a compact readable syntax.
Plus it improves with each version of Neo4J. Which is cool.
My point is that gremlin has been super efficient for us to express (in its functional way) tricky traversals. So I do not see any reason to discard it as a "inefficient" technology.