Reflect.get() vs Property Access vs Index Access

Benchmark created on


Setup

const data = {
  success: false,
  error: 'Validation error: Required at "username"',
  reason: "Failed validation",
  details: {
    validationIssues: [
      {
        code: "invalid_type",
        expected: "string",
        received: "undefined",
        path: ["username"],
        message: "Required",
      },
    ],
  },
};

var result;

Test runner

Ready to run.

Testing in
TestOps/sec
Reflect.get(obj, "property")
result = Reflect.get(data, "error");
result = Reflect.get(data, "success");
result = Reflect.get(data, "details");
result = Reflect.get(Reflect.get(Reflect.get(Reflect.get(Reflect.get(data, "details"), "validationIssues"), 0), "path"), 0);
ready
Property Accessor (obj.property)
result = data.error;
result = data.success;
result = data.details;
result = data.details.validationIssues[0].path[0]
ready
Index Accessor (obj["property"])
result = data["error"];
result = data["success"];
result = data["details"];
result = data["details"]["validationIssues"][0]["path"][0];
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.