add benchmark for real wrapper classes around a JsonBuffer (#151)

This helps us to evaluate how much extension types are actually buying us, by benchmarking against thin wrappers around maps.

There are many advantages of real wrappers, such as type checks can actually work, and we can have many different implementations.

I have a specific idea in mind here, which is that the analyzer/CFE could provide their own thin wrapper implementations of these types, which wrap the analyzer/CFE representations and implement lazy getters. This would potentially allow us to handle all the query filtering, by just lazily reading the properties we care about into a new (buffer based) representation of the object, based on the fields present in the query.

Results are as follows:

```
SdkMapsJsonWireBenchmark: 1896ms, 7177227 bytes
     SdkMapsBufferWireBenchmark: 1984ms, 5122684 bytes
    SdkMapsBuilderWireBenchmark: 1631ms, 4859868 bytes
      LazyMapsJsonWireBenchmark: 1099ms, 7177227 bytes
    LazyMapsBufferWireBenchmark:  590ms, 5122684 bytes
LazyWrappersBufferWireBenchmark:  424ms, 2111761 bytes
   BuilderMapsJsonWireBenchmark: 1394ms, 7177227 bytes
BuilderMapsBuilderWireBenchmark:  396ms, 2111761 bytes

     ProcessSdkMapsJsonWireBenchmark:  161ms, hash 23186292
  ProcessLazyMapsBufferWireBenchmark:  257ms, hash 23186292
ProcessLazyWrappersBufferWireBenchmark:  362ms, hash 23186292
ProcessBuilderMapsBuilderWireBenchmark:  356ms, hash 23186292
```
3 files changed
tree: 5045a84119b2debfb5255458167bc945fc99afbc
  1. .github/
  2. goldens/
  3. pkgs/
  4. schemas/
  5. tool/
  6. .gitattributes
  7. .gitignore
  8. CONTRIBUTING.md
  9. LICENSE
  10. mono_repo.yaml
  11. pubspec.yaml
  12. README.md
README.md

Overview

This repository is home to various macro related Dart packages.

Packages

PackageDescriptionVersion
_analyzer_macrosMacro support for the analyzer.
_cfe_macrosMacro support for the CFE.
_macro_builderBuilds macros.
_macro_clientConnects user macro code to a macro host.
_macro_hostHosts macros.
_macro_runnerRuns macros.
_macro_serverServes a macro_service.
_test_macrosSome test macros.
dart_modelData model for information about Dart code, queries about Dart code and augmentations to Dart code. Serializable with a versioned JSON schema for use by macros, generators and other tools.pub package
macroFor implementing a macro.pub package
macro_serviceMacro communication with the macro host.pub package
generate_dart_model

Publishing automation

For information about our publishing automation and release process, see https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

For additional information about contributing, see our contributing page.