neo4j-javascript-driver icon indicating copy to clipboard operation
neo4j-javascript-driver copied to clipboard

The JavaScript driver is about 4 times slower than the C# one

Open AFatNiBBa opened this issue 5 months ago • 4 comments

Bug Report

The JavaScript driver is about 4 times slower than the C# one, but the query takes the same amount on the database side. It's the fact alone that one is written in C# enough to justify this big increase in execution times?

My code

JavaScript

async function execute(pass: string) {
  const db = driver("bolt://localhost:7687", auth.basic("neo4j", pass));

  try
  {
    console.time("query");
    const cypher = "MATCH (master:Cont_SCH_Master)-[:HAS]->(x:Cont_SCH) RETURN master, collect(x) as details";
    const res = await db.executeQuery(cypher, undefined, { database: "neo4j", routing: "READ" });
    console.timeEnd("query");
    console.log(res.summary);
    return res.records;
  }
  finally { await db.close(); }
}

C#

static async Task<List<IRecord>> Execute(string pass)
{
  await using var driver = GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", pass));
  await using var session = driver.AsyncSession();

  var sw = Stopwatch.StartNew();
  try
  {
    var res = await session.RunAsync("MATCH (master:Cont_SCH_Master)-[:HAS]->(x:Cont_SCH) RETURN master, collect(x) as details");
    return await res.ToListAsync();
  }
  finally
  {
    Console.WriteLine($"query: {sw.Elapsed.TotalMilliseconds} ms");
  }
}

Timings

JavaScript image

C#

query: 11670,4118 ms

My Environment

Javascript Runtime Version: Edge 128.0.2739.67 Driver Version: 5.24.1 Neo4j Version and Edition: 5.23.0 (enterprise) Operating System: Windows 11

AFatNiBBa avatar Sep 11 '24 09:09 AFatNiBBa