Skip to content

Commit

Permalink
Revise JSON Schema public interface namespaces (#1501)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
  • Loading branch information
jviotti authored Jan 28, 2025
1 parent 3a44f00 commit 97b4930
Show file tree
Hide file tree
Showing 53 changed files with 1,494 additions and 1,446 deletions.
2 changes: 1 addition & 1 deletion src/core/jsonschema/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ include(./official_resolver.cmake)
sourcemeta_library(NAMESPACE sourcemeta PROJECT core NAME jsonschema
FOLDER "Core/JSON Schema"
PRIVATE_HEADERS bundle.h resolver.h
walker.h reference.h frame.h error.h unevaluated.h
walker.h frame.h error.h unevaluated.h
keywords.h transform.h
SOURCES jsonschema.cc default_walker.cc frame.cc
resolver.cc walker.cc bundle.cc
Expand Down
4 changes: 2 additions & 2 deletions src/core/jsonschema/bundle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ auto is_official_metaschema_reference(const sourcemeta::core::Pointer &pointer,

auto bundle_schema(sourcemeta::core::JSON &root, const std::string &container,
const sourcemeta::core::JSON &subschema,
sourcemeta::core::Frame &frame,
sourcemeta::core::SchemaFrame &frame,
const sourcemeta::core::SchemaWalker &walker,
const sourcemeta::core::SchemaResolver &resolver,
const std::optional<std::string> &default_dialect) -> void {
Expand Down Expand Up @@ -137,7 +137,7 @@ auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker,
const std::optional<std::string> &default_dialect) -> void {
const auto vocabularies{
sourcemeta::core::vocabularies(schema, resolver, default_dialect)};
sourcemeta::core::Frame frame;
sourcemeta::core::SchemaFrame frame;
bundle_schema(schema, definitions_keyword(vocabularies), schema, frame,
walker, resolver, default_dialect);
}
Expand Down
18 changes: 12 additions & 6 deletions src/core/jsonschema/default_walker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ auto sourcemeta::core::default_schema_walker(
-> sourcemeta::core::SchemaWalkerResult {
#define WALK(vocabulary, _keyword, strategy, ...) \
if (vocabularies.contains(vocabulary) && keyword == _keyword) \
return {sourcemeta::core::KeywordType::strategy, vocabulary, {__VA_ARGS__}};
return {sourcemeta::core::SchemaKeywordType::strategy, \
vocabulary, \
{__VA_ARGS__}};

#define WALK_ANY(vocabulary_1, vocabulary_2, _keyword, strategy, ...) \
WALK(vocabulary_1, _keyword, strategy, __VA_ARGS__) \
Expand Down Expand Up @@ -306,7 +308,8 @@ auto sourcemeta::core::default_schema_walker(
if ((vocabularies.contains(HTTP_BASE "draft-07/schema#") ||
vocabularies.contains(HTTP_BASE "draft-07/hyper-schema#")) &&
keyword != "$ref") {
return {sourcemeta::core::KeywordType::Unknown, std::nullopt, {"$ref"}};
return {
sourcemeta::core::SchemaKeywordType::Unknown, std::nullopt, {"$ref"}};
}

// Draft6
Expand Down Expand Up @@ -410,7 +413,8 @@ auto sourcemeta::core::default_schema_walker(
if ((vocabularies.contains(HTTP_BASE "draft-06/schema#") ||
vocabularies.contains(HTTP_BASE "draft-06/hyper-schema#")) &&
keyword != "$ref") {
return {sourcemeta::core::KeywordType::Unknown, std::nullopt, {"$ref"}};
return {
sourcemeta::core::SchemaKeywordType::Unknown, std::nullopt, {"$ref"}};
}

// Draft4
Expand Down Expand Up @@ -494,7 +498,8 @@ auto sourcemeta::core::default_schema_walker(
if ((vocabularies.contains(HTTP_BASE "draft-04/schema#") ||
vocabularies.contains(HTTP_BASE "draft-04/hyper-schema#")) &&
keyword != "$ref") {
return {sourcemeta::core::KeywordType::Unknown, std::nullopt, {"$ref"}};
return {
sourcemeta::core::SchemaKeywordType::Unknown, std::nullopt, {"$ref"}};
}

// Draft3
Expand Down Expand Up @@ -538,7 +543,8 @@ auto sourcemeta::core::default_schema_walker(
// $ref also takes precedence over any unknown keyword
if (vocabularies.contains(HTTP_BASE "draft-03/schema#") &&
keyword != "$ref") {
return {sourcemeta::core::KeywordType::Unknown, std::nullopt, {"$ref"}};
return {
sourcemeta::core::SchemaKeywordType::Unknown, std::nullopt, {"$ref"}};
}

// Draft2
Expand Down Expand Up @@ -662,5 +668,5 @@ auto sourcemeta::core::default_schema_walker(
#undef WALK
#undef WALK_ANY
#undef WALK_MAYBE_DEPENDENT
return {sourcemeta::core::KeywordType::Unknown, std::nullopt, {}};
return {sourcemeta::core::SchemaKeywordType::Unknown, std::nullopt, {}};
}
202 changes: 108 additions & 94 deletions src/core/jsonschema/frame.cc

Large diffs are not rendered by default.

13 changes: 6 additions & 7 deletions src/core/jsonschema/include/sourcemeta/core/jsonschema.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <sourcemeta/core/jsonschema_error.h>
#include <sourcemeta/core/jsonschema_frame.h>
#include <sourcemeta/core/jsonschema_keywords.h>
#include <sourcemeta/core/jsonschema_reference.h>
#include <sourcemeta/core/jsonschema_resolver.h>
#include <sourcemeta/core/jsonschema_transform.h>
#include <sourcemeta/core/jsonschema_unevaluated.h>
Expand Down Expand Up @@ -49,7 +48,7 @@ auto is_schema(const JSON &schema) -> bool;

/// @ingroup jsonschema
/// The strategy to follow when attempting to identify a schema
enum class IdentificationStrategy : std::uint8_t {
enum class SchemaIdentificationStrategy : std::uint8_t {
/// Only proceed if we can guarantee the identifier is valid
Strict,

Expand Down Expand Up @@ -83,11 +82,11 @@ enum class IdentificationStrategy : std::uint8_t {
/// guessing game. Often useful if you have a schema without a dialect and you
/// want to at least try to get something.
SOURCEMETA_CORE_JSONSCHEMA_EXPORT
auto identify(
const JSON &schema, const SchemaResolver &resolver,
const IdentificationStrategy strategy = IdentificationStrategy::Strict,
const std::optional<std::string> &default_dialect = std::nullopt,
const std::optional<std::string> &default_id = std::nullopt)
auto identify(const JSON &schema, const SchemaResolver &resolver,
const SchemaIdentificationStrategy strategy =
SchemaIdentificationStrategy::Strict,
const std::optional<std::string> &default_dialect = std::nullopt,
const std::optional<std::string> &default_id = std::nullopt)
-> std::optional<std::string>;

/// @ingroup jsonschema
Expand Down
48 changes: 24 additions & 24 deletions src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#endif

#include <sourcemeta/core/jsonpointer.h>
#include <sourcemeta/core/jsonschema_reference.h>
#include <sourcemeta/core/jsonschema_keywords.h>
#include <sourcemeta/core/jsonschema_resolver.h>
#include <sourcemeta/core/jsonschema_walker.h>

Expand Down Expand Up @@ -44,59 +44,59 @@ namespace sourcemeta::core {
/// }
/// })JSON");
///
/// sourcemeta::core::Frame frame;
/// sourcemeta::core::SchemaSchemaFrame frame;
/// frame.analyse(document,
/// sourcemeta::core::default_schema_walker,
/// sourcemeta::core::official_resolver);
///
/// // IDs
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/foo"}));
///
/// // Anchors
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#test"}));
///
/// // Root Pointers
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/$id"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/$schema"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/items"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/items/$id"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/items/type"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties/foo"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties/foo/$anchor"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties/foo/type"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties/bar"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/schema#/properties/bar/$ref"}));
///
/// // Subpointers
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/foo#/$id"}));
/// assert(frame.locations().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.locations().contains({sourcemeta::core::SchemaReferenceType::Static,
/// "https://www.example.com/foo#/type"}));
///
/// // References
/// assert(frame.references().contains({sourcemeta::core::ReferenceType::Static,
/// assert(frame.references().contains({sourcemeta::core::SchemaReferenceType::Static,
/// { "properties", "bar", "$ref" }}));
/// assert(frame.references().at({sourcemeta::core::ReferenceType::Static,
/// assert(frame.references().at({sourcemeta::core::SchemaReferenceType::Static,
/// { "properties", "bar", "$ref" }}).destination ==
/// "https://www.example.com/schema#/properties/foo");
/// ```
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT Frame {
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaFrame {
public:
/// A single entry in a JSON Schema reference map
struct ReferencesEntry {
Expand All @@ -113,7 +113,7 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT Frame {
/// have a static and a dynamic reference to the same location
/// on the same schema object.
using References =
std::map<std::pair<ReferenceType, Pointer>, ReferencesEntry>;
std::map<std::pair<SchemaReferenceType, Pointer>, ReferencesEntry>;

#if defined(__GNUC__)
#pragma GCC diagnostic push
Expand Down Expand Up @@ -150,7 +150,7 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT Frame {
/// JSON Pointers within the schema, and subschemas dialects. We call it
/// reference frame as this mapping is essential for resolving references.
using Locations =
std::map<std::pair<ReferenceType, std::string>, LocationsEntry>;
std::map<std::pair<SchemaReferenceType, std::string>, LocationsEntry>;

/// Analyse a given schema
auto analyse(const JSON &schema, const SchemaWalker &walker,
Expand Down Expand Up @@ -188,7 +188,7 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT Frame {
auto
dereference(const LocationsEntry &location,
const Pointer &relative_schema_location = empty_pointer) const
-> std::pair<ReferenceType,
-> std::pair<SchemaReferenceType,
std::optional<std::reference_wrapper<const LocationsEntry>>>;

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@

namespace sourcemeta::core {

/// @ingroup jsonschema
/// The reference type
enum class SchemaReferenceType : std::uint8_t { Static, Dynamic };

#if defined(__GNUC__)
#pragma GCC diagnostic push
// For some strange reason, GCC on Debian 11 believes that a member of
Expand All @@ -14,7 +18,7 @@ namespace sourcemeta::core {
#endif
/// @ingroup jsonschema
/// Determines the type of a JSON Schema keyword
enum class KeywordType : std::uint8_t {
enum class SchemaKeywordType : std::uint8_t {
/// The JSON Schema keyword is unknown
Unknown,
/// The JSON Schema keyword is a non-applicator assertion
Expand Down
14 changes: 0 additions & 14 deletions src/core/jsonschema/include/sourcemeta/core/jsonschema_reference.h

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ auto official_resolver(std::string_view identifier)
/// #include <cassert>
///
/// // (1) Create a map resolver that falls back to the official resolver
/// sourcemeta::core::MapSchemaResolver
/// sourcemeta::core::SchemaMapResolver
/// resolver{sourcemeta::core::official_resolver};
///
/// const sourcemeta::core::JSON schema =
Expand All @@ -62,14 +62,14 @@ auto official_resolver(std::string_view identifier)
///
/// assert(resolver("https://www.example.com").has_value());
/// ```
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT MapSchemaResolver {
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaMapResolver {
public:
/// Construct an empty resolver. If you don't add schemas to it, it will
/// always resolve to nothing
MapSchemaResolver();
SchemaMapResolver();

/// Construct an empty resolver that has another schema resolver as a fallback
MapSchemaResolver(const SchemaResolver &resolver);
SchemaMapResolver(const SchemaResolver &resolver);

/// Register a schema to the map resolver
auto add(const JSON &schema,
Expand Down Expand Up @@ -104,22 +104,22 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT MapSchemaResolver {
/// #include <cassert>
///
/// // (1) Create a flat file resolver that falls back to the official resolver
/// sourcemeta::core::FlatFileSchemaResolver
/// sourcemeta::core::SchemaFlatFileResolver
/// resolver{sourcemeta::core::official_resolver};
///
/// // (2) Register a schema by path
/// resolver.add("path/to/example.schema.json");
///
/// assert(resolver("https://www.example.com").has_value());
/// ```
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT FlatFileSchemaResolver {
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaFlatFileResolver {
public:
/// Construct an empty resolver. If you don't add schemas to it, it will
/// always resolve to nothing
FlatFileSchemaResolver();
SchemaFlatFileResolver();

/// Construct an empty resolver that has another schema resolver as a fallback
FlatFileSchemaResolver(const SchemaResolver &resolver);
SchemaFlatFileResolver(const SchemaResolver &resolver);

/// Determines how to access the registered file entry, letting you hook
/// into how schemas are read to support other file formats, like YAML
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
namespace sourcemeta::core {

/// @ingroup jsonschema
struct UnevaluatedEntry {
struct SchemaUnevaluatedEntry {
/// The absolute pointers of the static keyword dependencies
std::set<Pointer> static_dependencies;
/// The absolute pointers of the static keyword dependencies
Expand All @@ -31,7 +31,7 @@ struct UnevaluatedEntry {

/// @ingroup jsonschema
/// The flattened set of unevaluated cases in the schema by absolute URI
using UnevaluatedEntries = std::map<std::string, UnevaluatedEntry>;
using SchemaUnevaluatedEntries = std::map<std::string, SchemaUnevaluatedEntry>;

// TODO: Eventually generalize this to list every cross-dependency between
// keywords, supporting extensibility of custom vocabularies too
Expand All @@ -54,7 +54,7 @@ using UnevaluatedEntries = std::map<std::string, UnevaluatedEntry>;
/// "unevaluatedProperties": false
/// })JSON");
///
/// sourcemeta::core::Frame frame;
/// sourcemeta::core::SchemaSchemaFrame frame;
/// frame.analyse(document,
/// sourcemeta::core::default_schema_walker,
/// sourcemeta::core::official_resolver);
Expand All @@ -67,9 +67,9 @@ using UnevaluatedEntries = std::map<std::string, UnevaluatedEntry>;
/// assert(!result.at("#/unevaluatedProperties").dynamic);
/// assert(result.at("#/unevaluatedProperties").dependencies.empty());
/// ```
auto SOURCEMETA_CORE_JSONSCHEMA_EXPORT
unevaluated(const JSON &schema, const Frame &frame, const SchemaWalker &walker,
const SchemaResolver &resolver) -> UnevaluatedEntries;
auto SOURCEMETA_CORE_JSONSCHEMA_EXPORT unevaluated(
const JSON &schema, const SchemaFrame &frame, const SchemaWalker &walker,
const SchemaResolver &resolver) -> SchemaUnevaluatedEntries;

} // namespace sourcemeta::core

Expand Down
Loading

10 comments on commit 97b4930

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.22033926976434 ns/iter 2.224490033782528 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.222963042871118 ns/iter 2.2163196355636816 ns/iter 1.00
Regex_Period_Asterisk 2.192105793226488 ns/iter 2.2185079225782487 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 2.2087729962705724 ns/iter 2.205359675285626 ns/iter 1.00
Regex_Period_Plus 2.681223916526168 ns/iter 2.486167460822201 ns/iter 1.08
Regex_Period 2.4867798881509606 ns/iter 2.486937337430677 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.486626733853787 ns/iter 2.486476594902778 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.486848610910235 ns/iter 2.4867791056999358 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 2.485478998351139 ns/iter 2.485293186770836 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.2066371951642245 ns/iter 2.4871802798846225 ns/iter 0.89
Regex_Caret_X_Hyphen 13.055778286114473 ns/iter 13.071042525060351 ns/iter 1.00
Regex_Period_Md_Dollar 82.14287687744154 ns/iter 82.24044383200162 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 6.837765273157614 ns/iter 6.84216840074042 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 4.039756074165522 ns/iter 4.041864668114246 ns/iter 1.00
Regex_Nested_Backtrack 498.9717609831318 ns/iter 505.2127239226588 ns/iter 0.99
JSON_Array_Of_Objects_Unique 395.3152703209778 ns/iter 405.4768926300942 ns/iter 0.97
JSON_Parse_1 30387.91814621384 ns/iter 31167.911377777575 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 59.29633845853599 ns/iter 59.383531041618156 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 159.99193902529157 ns/iter 171.2397544961988 ns/iter 0.93
JSON_String_Equal/10 6.55105791916226 ns/iter 7.7752848718545025 ns/iter 0.84
JSON_String_Equal/100 14.543574018694638 ns/iter 8.50185234479276 ns/iter 1.71
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9330583417238094 ns/iter 0.941722693074114 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.594779022655032 ns/iter 10.25828691430604 ns/iter 1.42
JSON_String_Fast_Hash/10 2.4890525868305873 ns/iter 2.4902681971508445 ns/iter 1.00
JSON_String_Fast_Hash/100 2.486561167001526 ns/iter 2.487822424019786 ns/iter 1.00
JSON_String_Key_Hash/10 2.661833735420911 ns/iter 2.180959647896586 ns/iter 1.22
JSON_String_Key_Hash/100 1.8645851000579838 ns/iter 1.869355881651737 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.730276291463121 ns/iter 3.7409878595480266 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.729457278416393 ns/iter 3.737730820780923 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.728112958145678 ns/iter 3.7451223919619214 ns/iter 1.00
Pointer_Object_Traverse 44.20803073286398 ns/iter 44.474238504589096 ns/iter 0.99
Pointer_Object_Try_Traverse 52.242369136876825 ns/iter 52.335880487069396 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 308.8456252121221 ns/iter 289.555656413328 ns/iter 1.07

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 7.447039062500644 ns/iter 7.190870057183948 ns/iter 1.04
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 6.985383928571462 ns/iter 6.897811383930832 ns/iter 1.01
Regex_Period_Asterisk 6.920938616070364 ns/iter 6.950489955358361 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 7.368802455357378 ns/iter 7.074734374999789 ns/iter 1.04
Regex_Period_Plus 7.422790178571249 ns/iter 7.663383928570815 ns/iter 0.97
Regex_Period 7.167430803570899 ns/iter 7.804609786586284 ns/iter 0.92
Regex_Caret_Period_Plus_Dollar 7.342206249999452 ns/iter 7.256041294641286 ns/iter 1.01
Regex_Caret_Group_Period_Plus_Group_Dollar 7.49573995535689 ns/iter 7.429072734691383 ns/iter 1.01
Regex_Caret_Period_Asterisk_Dollar 7.106855325415568 ns/iter 7.28472544642906 ns/iter 0.98
Regex_Caret_Group_Period_Asterisk_Group_Dollar 6.83760491071439 ns/iter 7.050293526784657 ns/iter 0.97
Regex_Caret_X_Hyphen 11.757250000000496 ns/iter 11.776105357142798 ns/iter 1.00
Regex_Period_Md_Dollar 152.56962053571092 ns/iter 156.65799107143891 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 10.39953906249913 ns/iter 10.271101785714825 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 7.444496651785672 ns/iter 7.8812651433870675 ns/iter 0.94
Regex_Nested_Backtrack 607.5797321428362 ns/iter 620.1635714284797 ns/iter 0.98
JSON_Array_Of_Objects_Unique 488.9984999999797 ns/iter 489.0600424450617 ns/iter 1.00
JSON_Parse_1 79579.63037363243 ns/iter 79714.20758930188 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 60.91046428571595 ns/iter 63.738330000001035 ns/iter 0.96
JSON_Equality_Helm_Chart_Lock 190.28800806142164 ns/iter 187.25122012841223 ns/iter 1.02
JSON_String_Equal/10 9.008887459782798 ns/iter 9.056513798855478 ns/iter 0.99
JSON_String_Equal/100 9.957204866262614 ns/iter 9.943690134181171 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 2.169298124999841 ns/iter 2.170392812499955 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.983080357143004 ns/iter 15.368949244366608 ns/iter 0.97
JSON_String_Fast_Hash/10 4.028476569693771 ns/iter 4.02566764111716 ns/iter 1.00
JSON_String_Fast_Hash/100 4.0237031321850925 ns/iter 4.027774917906397 ns/iter 1.00
JSON_String_Key_Hash/10 8.219237723214233 ns/iter 7.875758928572095 ns/iter 1.04
JSON_String_Key_Hash/100 4.029690096481689 ns/iter 4.038916614356162 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.718696980796336 ns/iter 3.7167048147920396 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 4.955552999999782 ns/iter 4.951602999999523 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.41037468141014 ns/iter 3.408688342127898 ns/iter 1.00
Pointer_Object_Traverse 50.13000999999804 ns/iter 49.0120799999886 ns/iter 1.02
Pointer_Object_Try_Traverse 67.62931249999684 ns/iter 67.64337499999687 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 183.44653423631215 ns/iter 184.40942717939004 ns/iter 0.99

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Pointer_Object_Traverse 47.694242976073106 ns/iter 47.65269441927692 ns/iter 1.00
Pointer_Object_Try_Traverse 26.167916664706343 ns/iter 26.1349753645266 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 144.8356054787893 ns/iter 145.5356679245723 ns/iter 1.00
JSON_Array_Of_Objects_Unique 411.89642406386105 ns/iter 410.9426964067779 ns/iter 1.00
JSON_Parse_1 33431.82440888483 ns/iter 33462.92860899699 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 62.60291655013835 ns/iter 62.873291688469 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 150.77467358146293 ns/iter 151.06016473000122 ns/iter 1.00
JSON_String_Equal/10 6.337314423434041 ns/iter 6.342003897248392 ns/iter 1.00
JSON_String_Equal/100 6.961987409488479 ns/iter 6.981182361428334 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9338948359704473 ns/iter 0.9345955026978608 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.290906978191495 ns/iter 14.293382316785056 ns/iter 1.00
JSON_String_Fast_Hash/10 0.9346036299994568 ns/iter 0.9331333904774174 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9329239207709119 ns/iter 0.9384293037119047 ns/iter 0.99
JSON_String_Key_Hash/10 1.6727751636803028 ns/iter 1.6707210419138558 ns/iter 1.00
JSON_String_Key_Hash/100 1.9843237305413846 ns/iter 1.9824588160324201 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.4874488095428124 ns/iter 2.4864044920162702 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.4892991898891905 ns/iter 2.487712784056823 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.1101681995583204 ns/iter 3.1072782873109723 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.4219734978209546 ns/iter 3.4187148016600792 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.4273225184117417 ns/iter 3.433751878410639 ns/iter 1.00
Regex_Period_Asterisk 3.4242724977680856 ns/iter 3.421097900087504 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 3.420956951276758 ns/iter 3.443963975751735 ns/iter 0.99
Regex_Period_Plus 3.7290060958125606 ns/iter 3.7298673202767745 ns/iter 1.00
Regex_Period 3.7286345994315364 ns/iter 3.728402058584454 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.729201648961402 ns/iter 3.731126926739495 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.729798412443974 ns/iter 3.729506697457363 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 4.661302392176089 ns/iter 4.658974492385322 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.6616028609127165 ns/iter 4.660909669722313 ns/iter 1.00
Regex_Caret_X_Hyphen 8.399195939702683 ns/iter 13.069584972112253 ns/iter 0.64
Regex_Period_Md_Dollar 92.78222561223326 ns/iter 89.95689194978954 ns/iter 1.03
Regex_Caret_Slash_Period_Asterisk 7.79898193960681 ns/iter 8.083109476813025 ns/iter 0.96
Regex_Caret_Period_Range_Dollar 3.7286561235254787 ns/iter 4.660677650612457 ns/iter 0.80
Regex_Nested_Backtrack 840.1960569498866 ns/iter 828.7841155166956 ns/iter 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2098587151273037 ns/iter 2.224490033782528 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.2016408498886455 ns/iter 2.2163196355636816 ns/iter 0.99
Regex_Period_Asterisk 2.1897914035213035 ns/iter 2.2185079225782487 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 2.218739022198521 ns/iter 2.205359675285626 ns/iter 1.01
Regex_Period_Plus 2.797361990148969 ns/iter 2.486167460822201 ns/iter 1.13
Regex_Period 2.7971234798423033 ns/iter 2.486937337430677 ns/iter 1.12
Regex_Caret_Period_Plus_Dollar 2.7977165776701733 ns/iter 2.486476594902778 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 2.7965981082977827 ns/iter 2.4867791056999358 ns/iter 1.12
Regex_Caret_Period_Asterisk_Dollar 3.4186215502456654 ns/iter 2.485293186770836 ns/iter 1.38
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.4164711516314363 ns/iter 2.4871802798846225 ns/iter 1.37
Regex_Caret_X_Hyphen 13.077046534556654 ns/iter 13.071042525060351 ns/iter 1.00
Regex_Period_Md_Dollar 82.25123700771896 ns/iter 82.24044383200162 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 5.905823341577745 ns/iter 6.84216840074042 ns/iter 0.86
Regex_Caret_Period_Range_Dollar 4.105037112952024 ns/iter 4.041864668114246 ns/iter 1.02
Regex_Nested_Backtrack 498.24015060527876 ns/iter 505.2127239226588 ns/iter 0.99
JSON_Array_Of_Objects_Unique 402.13537061096264 ns/iter 405.4768926300942 ns/iter 0.99
JSON_Parse_1 30254.051992918412 ns/iter 31167.911377777575 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 59.36388624110974 ns/iter 59.383531041618156 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 151.00639652495593 ns/iter 171.2397544961988 ns/iter 0.88
JSON_String_Equal/10 6.222143740269638 ns/iter 7.7752848718545025 ns/iter 0.80
JSON_String_Equal/100 6.852161027328132 ns/iter 8.50185234479276 ns/iter 0.81
JSON_String_Equal_Small_By_Perfect_Hash/10 0.934710320510993 ns/iter 0.941722693074114 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.260992209429737 ns/iter 10.25828691430604 ns/iter 1.00
JSON_String_Fast_Hash/10 2.489903811714908 ns/iter 2.4902681971508445 ns/iter 1.00
JSON_String_Fast_Hash/100 2.4892993126702754 ns/iter 2.487822424019786 ns/iter 1.00
JSON_String_Key_Hash/10 2.17850669738415 ns/iter 2.180959647896586 ns/iter 1.00
JSON_String_Key_Hash/100 1.8663222663224526 ns/iter 1.869355881651737 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.738043978743922 ns/iter 3.7409878595480266 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.738051164952342 ns/iter 3.737730820780923 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.7385605022259996 ns/iter 3.7451223919619214 ns/iter 1.00
Pointer_Object_Traverse 44.43308577893429 ns/iter 44.474238504589096 ns/iter 1.00
Pointer_Object_Try_Traverse 52.34528038611598 ns/iter 52.335880487069396 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 308.4915896230929 ns/iter 289.555656413328 ns/iter 1.07

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 6.876897321429202 ns/iter 7.190870057183948 ns/iter 0.96
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 6.8928917410713915 ns/iter 6.897811383930832 ns/iter 1.00
Regex_Period_Asterisk 7.0548683035731585 ns/iter 6.950489955358361 ns/iter 1.02
Regex_Group_Period_Asterisk_Group 6.836526785714828 ns/iter 7.074734374999789 ns/iter 0.97
Regex_Period_Plus 7.543497767856471 ns/iter 7.663383928570815 ns/iter 0.98
Regex_Period 7.198368749998606 ns/iter 7.804609786586284 ns/iter 0.92
Regex_Caret_Period_Plus_Dollar 7.213687499998401 ns/iter 7.256041294641286 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 7.244962053571311 ns/iter 7.429072734691383 ns/iter 0.98
Regex_Caret_Period_Asterisk_Dollar 6.86750446428519 ns/iter 7.28472544642906 ns/iter 0.94
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.101599968296042 ns/iter 7.050293526784657 ns/iter 1.01
Regex_Caret_X_Hyphen 14.266118909524442 ns/iter 11.776105357142798 ns/iter 1.21
Regex_Period_Md_Dollar 151.4671651785347 ns/iter 156.65799107143891 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 10.26693281250246 ns/iter 10.271101785714825 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 7.665158482144108 ns/iter 7.8812651433870675 ns/iter 0.97
Regex_Nested_Backtrack 611.2467000000379 ns/iter 620.1635714284797 ns/iter 0.99
JSON_Array_Of_Objects_Unique 498.04050000011557 ns/iter 489.0600424450617 ns/iter 1.02
JSON_Parse_1 79974.26339286001 ns/iter 79714.20758930188 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 63.80287946429673 ns/iter 63.738330000001035 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 190.75346346013242 ns/iter 187.25122012841223 ns/iter 1.02
JSON_String_Equal/10 9.000914691958386 ns/iter 9.056513798855478 ns/iter 0.99
JSON_String_Equal/100 9.989322276835715 ns/iter 9.943690134181171 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 2.1695109374995525 ns/iter 2.170392812499955 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 15.10811607142821 ns/iter 15.368949244366608 ns/iter 0.98
JSON_String_Fast_Hash/10 4.029065051838041 ns/iter 4.02566764111716 ns/iter 1.00
JSON_String_Fast_Hash/100 4.029090587551515 ns/iter 4.027774917906397 ns/iter 1.00
JSON_String_Key_Hash/10 7.859871393482082 ns/iter 7.875758928572095 ns/iter 1.00
JSON_String_Key_Hash/100 4.028197998264745 ns/iter 4.038916614356162 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.746671600451823 ns/iter 3.7167048147920396 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Small 4.961602999999286 ns/iter 4.951602999999523 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.416456109969759 ns/iter 3.408688342127898 ns/iter 1.00
Pointer_Object_Traverse 48.9539700000023 ns/iter 49.0120799999886 ns/iter 1.00
Pointer_Object_Try_Traverse 67.638633928563 ns/iter 67.64337499999687 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.06604910713165 ns/iter 184.40942717939004 ns/iter 0.88

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.6462045583928893 ns/iter 1.6869035225838502 ns/iter 0.98
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6353382891624113 ns/iter 1.6717425280621576 ns/iter 0.98
Regex_Period_Asterisk 1.6204353131845621 ns/iter 1.7315909542226087 ns/iter 0.94
Regex_Group_Period_Asterisk_Group 1.694117969071111 ns/iter 1.5971479580792445 ns/iter 1.06
Regex_Period_Plus 2.1532336496329183 ns/iter 1.9851353312519882 ns/iter 1.08
Regex_Period 2.3499819863239795 ns/iter 1.987003552880149 ns/iter 1.18
Regex_Caret_Period_Plus_Dollar 2.3095886656894082 ns/iter 2.0360228609038016 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1657298483016056 ns/iter 2.0155546536548052 ns/iter 1.07
Regex_Caret_Period_Asterisk_Dollar 1.9381054109644182 ns/iter 1.7810159309933116 ns/iter 1.09
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.8781365890272625 ns/iter 1.8130581009595539 ns/iter 1.04
Regex_Caret_X_Hyphen 7.228273204438781 ns/iter 7.626872528480537 ns/iter 0.95
Regex_Period_Md_Dollar 69.79659739603261 ns/iter 78.60826172541992 ns/iter 0.89
Regex_Caret_Slash_Period_Asterisk 5.253233397848748 ns/iter 5.692941079132538 ns/iter 0.92
Regex_Caret_Period_Range_Dollar 2.308830044869517 ns/iter 2.4680798922526663 ns/iter 0.94
Regex_Nested_Backtrack 748.7237081465579 ns/iter 814.5975485414334 ns/iter 0.92
JSON_Array_Of_Objects_Unique 336.3752637543143 ns/iter 386.12357970750475 ns/iter 0.87
JSON_Parse_1 21846.504071223804 ns/iter 28793.78459546728 ns/iter 0.76
JSON_Fast_Hash_Helm_Chart_Lock 48.072970068095195 ns/iter 70.8878583613185 ns/iter 0.68
JSON_Equality_Helm_Chart_Lock 131.32130310267684 ns/iter 148.21819122903514 ns/iter 0.89
JSON_String_Equal/10 8.697064106215409 ns/iter 8.797447069798388 ns/iter 0.99
JSON_String_Equal/100 6.366353685206732 ns/iter 7.182115985197278 ns/iter 0.89
JSON_String_Equal_Small_By_Perfect_Hash/10 0.32785521383039906 ns/iter 0.34854794902482716 ns/iter 0.94
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.0652498816019955 ns/iter 3.2639696243637744 ns/iter 0.94
JSON_String_Fast_Hash/10 1.710198230926433 ns/iter 1.7446227372568068 ns/iter 0.98
JSON_String_Fast_Hash/100 1.9989906241958575 ns/iter 2.1209546876042005 ns/iter 0.94
JSON_String_Key_Hash/10 1.473730645483799 ns/iter 1.423988126096835 ns/iter 1.03
JSON_String_Key_Hash/100 1.306834623284057 ns/iter 1.430695725077948 ns/iter 0.91
JSON_Object_Defines_Miss_Same_Length 2.3062029119684713 ns/iter 2.7856325555331063 ns/iter 0.83
JSON_Object_Defines_Miss_Too_Small 2.281987983119143 ns/iter 2.8433110637269245 ns/iter 0.80
JSON_Object_Defines_Miss_Too_Large 2.2907336333544386 ns/iter 2.406699967161364 ns/iter 0.95
Pointer_Object_Traverse 17.55773703254445 ns/iter 17.58466030243771 ns/iter 1.00
Pointer_Object_Try_Traverse 22.387319615883314 ns/iter 22.5665462574543 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 175.3119871687736 ns/iter 185.86409612404606 ns/iter 0.94

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0795258728873245 ns/iter 1.6869035225838502 ns/iter 1.23
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.900586981410975 ns/iter 1.6717425280621576 ns/iter 1.14
Regex_Period_Asterisk 1.9981844700358833 ns/iter 1.7315909542226087 ns/iter 1.15
Regex_Group_Period_Asterisk_Group 2.0652798824196963 ns/iter 1.5971479580792445 ns/iter 1.29
Regex_Period_Plus 2.6341280845898347 ns/iter 1.9851353312519882 ns/iter 1.33
Regex_Period 2.3278764141279438 ns/iter 1.987003552880149 ns/iter 1.17
Regex_Caret_Period_Plus_Dollar 2.5215366747066454 ns/iter 2.0360228609038016 ns/iter 1.24
Regex_Caret_Group_Period_Plus_Group_Dollar 2.2011386863130737 ns/iter 2.0155546536548052 ns/iter 1.09
Regex_Caret_Period_Asterisk_Dollar 1.8799913213221484 ns/iter 1.7810159309933116 ns/iter 1.06
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.8628617656843047 ns/iter 1.8130581009595539 ns/iter 1.03
Regex_Caret_X_Hyphen 7.363098059319244 ns/iter 7.626872528480537 ns/iter 0.97
Regex_Period_Md_Dollar 81.57184989189872 ns/iter 78.60826172541992 ns/iter 1.04
Regex_Caret_Slash_Period_Asterisk 6.1311295426350485 ns/iter 5.692941079132538 ns/iter 1.08
Regex_Caret_Period_Range_Dollar 2.8472503789857293 ns/iter 2.4680798922526663 ns/iter 1.15
Regex_Nested_Backtrack 902.0403738510777 ns/iter 814.5975485414334 ns/iter 1.11
JSON_Array_Of_Objects_Unique 404.0183077209319 ns/iter 386.12357970750475 ns/iter 1.05
JSON_Parse_1 29291.21111574914 ns/iter 28793.78459546728 ns/iter 1.02
JSON_Fast_Hash_Helm_Chart_Lock 54.42421845511831 ns/iter 70.8878583613185 ns/iter 0.77
JSON_Equality_Helm_Chart_Lock 161.45317164939155 ns/iter 148.21819122903514 ns/iter 1.09
JSON_String_Equal/10 10.247032607629038 ns/iter 8.797447069798388 ns/iter 1.16
JSON_String_Equal/100 7.859067061508749 ns/iter 7.182115985197278 ns/iter 1.09
JSON_String_Equal_Small_By_Perfect_Hash/10 0.4710933279317561 ns/iter 0.34854794902482716 ns/iter 1.35
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.104461974432593 ns/iter 3.2639696243637744 ns/iter 1.26
JSON_String_Fast_Hash/10 2.0384044274393154 ns/iter 1.7446227372568068 ns/iter 1.17
JSON_String_Fast_Hash/100 2.4117017752558154 ns/iter 2.1209546876042005 ns/iter 1.14
JSON_String_Key_Hash/10 1.6829434624130353 ns/iter 1.423988126096835 ns/iter 1.18
JSON_String_Key_Hash/100 1.872159961228198 ns/iter 1.430695725077948 ns/iter 1.31
JSON_Object_Defines_Miss_Same_Length 3.2032579645039183 ns/iter 2.7856325555331063 ns/iter 1.15
JSON_Object_Defines_Miss_Too_Small 2.9329755362681427 ns/iter 2.8433110637269245 ns/iter 1.03
JSON_Object_Defines_Miss_Too_Large 3.162322933510721 ns/iter 2.406699967161364 ns/iter 1.31
Pointer_Object_Traverse 22.136578505828325 ns/iter 17.58466030243771 ns/iter 1.26
Pointer_Object_Try_Traverse 30.49808971925383 ns/iter 22.5665462574543 ns/iter 1.35
Pointer_Push_Back_Pointer_To_Weak_Pointer 217.8467662028683 ns/iter 185.86409612404606 ns/iter 1.17

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Pointer_Object_Traverse 45.7678396903338 ns/iter 47.65269441927692 ns/iter 0.96
Pointer_Object_Try_Traverse 26.10552410021411 ns/iter 26.1349753645266 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 146.0696940729446 ns/iter 145.5356679245723 ns/iter 1.00
JSON_Array_Of_Objects_Unique 432.84223624627924 ns/iter 410.9426964067779 ns/iter 1.05
JSON_Parse_1 33220.48805444475 ns/iter 33462.92860899699 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 68.88871887567379 ns/iter 62.873291688469 ns/iter 1.10
JSON_Equality_Helm_Chart_Lock 147.40067478125778 ns/iter 151.06016473000122 ns/iter 0.98
JSON_String_Equal/10 6.3352013613039935 ns/iter 6.342003897248392 ns/iter 1.00
JSON_String_Equal/100 6.964321279618878 ns/iter 6.981182361428334 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9330641593472272 ns/iter 0.9345955026978608 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.2868262435317 ns/iter 14.293382316785056 ns/iter 1.00
JSON_String_Fast_Hash/10 0.9326792112386526 ns/iter 0.9331333904774174 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9327539821487121 ns/iter 0.9384293037119047 ns/iter 0.99
JSON_String_Key_Hash/10 1.6722640117210488 ns/iter 1.6707210419138558 ns/iter 1.00
JSON_String_Key_Hash/100 1.9827411984046144 ns/iter 1.9824588160324201 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.490449108460974 ns/iter 2.4864044920162702 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.4889505154554685 ns/iter 2.487712784056823 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.1113642021276666 ns/iter 3.1072782873109723 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.4218297355281675 ns/iter 3.4187148016600792 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.42222318662483 ns/iter 3.433751878410639 ns/iter 1.00
Regex_Period_Asterisk 3.4203927157812704 ns/iter 3.421097900087504 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 3.4197692219521163 ns/iter 3.443963975751735 ns/iter 0.99
Regex_Period_Plus 3.7831826626144074 ns/iter 3.7298673202767745 ns/iter 1.01
Regex_Period 3.7597288172274244 ns/iter 3.728402058584454 ns/iter 1.01
Regex_Caret_Period_Plus_Dollar 3.732531040868804 ns/iter 3.731126926739495 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.7349811295172826 ns/iter 3.729506697457363 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 3.492014048777797 ns/iter 4.658974492385322 ns/iter 0.75
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.4199858411905457 ns/iter 4.660909669722313 ns/iter 0.73
Regex_Caret_X_Hyphen 13.124558199726573 ns/iter 13.069584972112253 ns/iter 1.00
Regex_Period_Md_Dollar 88.8592891917554 ns/iter 89.95689194978954 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 7.146990442522422 ns/iter 8.083109476813025 ns/iter 0.88
Regex_Caret_Period_Range_Dollar 3.4181999520373596 ns/iter 4.660677650612457 ns/iter 0.73
Regex_Nested_Backtrack 819.4720528614882 ns/iter 828.7841155166956 ns/iter 0.99

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/gcc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0803541093062576 ns/iter 2.0379328918072175 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.0816608247269177 ns/iter 2.0361142627987583 ns/iter 1.02
Regex_Period_Asterisk 2.0890726880494705 ns/iter 2.0987442978945574 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.0379794518999295 ns/iter 2.0353534665302773 ns/iter 1.00
Regex_Period_Plus 2.08127756563514 ns/iter 2.031408390799496 ns/iter 1.02
Regex_Period 2.0417621909354895 ns/iter 2.017677895346648 ns/iter 1.01
Regex_Caret_Period_Plus_Dollar 1.9947458726551082 ns/iter 2.033382121101866 ns/iter 0.98
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0229854322841376 ns/iter 2.037947366511367 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 1.948631640825621 ns/iter 2.022677054892075 ns/iter 0.96
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.439497857853424 ns/iter 2.3578196785253507 ns/iter 1.03
Regex_Caret_X_Hyphen 6.541600933887988 ns/iter 6.472651582566345 ns/iter 1.01
Regex_Period_Md_Dollar 77.73171753553517 ns/iter 73.55183719799044 ns/iter 1.06
Regex_Caret_Slash_Period_Asterisk 4.479573826342723 ns/iter 4.73106125101573 ns/iter 0.95
Regex_Caret_Period_Range_Dollar 2.021374414608799 ns/iter 2.0651391833391317 ns/iter 0.98
Regex_Nested_Backtrack 887.841648274539 ns/iter 880.7580448587958 ns/iter 1.01
JSON_Array_Of_Objects_Unique 225.31831198489382 ns/iter 225.0275811596015 ns/iter 1.00
JSON_Parse_1 24679.526628858996 ns/iter 28440.359345994275 ns/iter 0.87
JSON_Fast_Hash_Helm_Chart_Lock 25.93426394774989 ns/iter 26.693127658581098 ns/iter 0.97
JSON_Equality_Helm_Chart_Lock 127.60116334693704 ns/iter 122.0241275033822 ns/iter 1.05
JSON_String_Equal/10 5.538371625157385 ns/iter 5.805640549202992 ns/iter 0.95
JSON_String_Equal/100 5.389903268275561 ns/iter 5.698044275313943 ns/iter 0.95
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8238564095827031 ns/iter 0.8077840838958594 ns/iter 1.02
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.767068197486477 ns/iter 3.7330192388891823 ns/iter 1.01
JSON_String_Fast_Hash/10 2.0553482212392207 ns/iter 2.054200506416629 ns/iter 1.00
JSON_String_Fast_Hash/100 2.0544022125110932 ns/iter 2.056108633137606 ns/iter 1.00
JSON_String_Key_Hash/10 1.5859259416018787 ns/iter 1.5502688306856098 ns/iter 1.02
JSON_String_Key_Hash/100 2.106470891637616 ns/iter 2.0699706951794954 ns/iter 1.02
JSON_Object_Defines_Miss_Same_Length 1.8089450238086604 ns/iter 1.8570757302744108 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Small 1.9691325803346178 ns/iter 2.0214743949480414 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Large 1.8050055090642503 ns/iter 1.8710601381824672 ns/iter 0.96
Pointer_Object_Traverse 60.04601399867257 ns/iter 57.915578368698284 ns/iter 1.04
Pointer_Object_Try_Traverse 38.612021126689456 ns/iter 38.77973408532813 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 192.77800416132058 ns/iter 169.95327395678524 ns/iter 1.13

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/gcc)

Benchmark suite Current: 97b4930 Previous: 3a44f00 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.1377475672394706 ns/iter 2.0379328918072175 ns/iter 1.05
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.073204088317801 ns/iter 2.0361142627987583 ns/iter 1.02
Regex_Period_Asterisk 2.040108356447086 ns/iter 2.0987442978945574 ns/iter 0.97
Regex_Group_Period_Asterisk_Group 2.040202048297104 ns/iter 2.0353534665302773 ns/iter 1.00
Regex_Period_Plus 2.061490211505423 ns/iter 2.031408390799496 ns/iter 1.01
Regex_Period 2.078306432368491 ns/iter 2.017677895346648 ns/iter 1.03
Regex_Caret_Period_Plus_Dollar 2.0029643604421836 ns/iter 2.033382121101866 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0140446441526367 ns/iter 2.037947366511367 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 2.0348776056389233 ns/iter 2.022677054892075 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.4763371566771006 ns/iter 2.3578196785253507 ns/iter 1.05
Regex_Caret_X_Hyphen 6.474068531623166 ns/iter 6.472651582566345 ns/iter 1.00
Regex_Period_Md_Dollar 74.56593647539144 ns/iter 73.55183719799044 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 4.687675264028264 ns/iter 4.73106125101573 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 1.9830267423668893 ns/iter 2.0651391833391317 ns/iter 0.96
Regex_Nested_Backtrack 860.8714943888306 ns/iter 880.7580448587958 ns/iter 0.98
JSON_Array_Of_Objects_Unique 223.14341001354458 ns/iter 225.0275811596015 ns/iter 0.99
JSON_Parse_1 24703.16820547436 ns/iter 28440.359345994275 ns/iter 0.87
JSON_Fast_Hash_Helm_Chart_Lock 25.24927929430813 ns/iter 26.693127658581098 ns/iter 0.95
JSON_Equality_Helm_Chart_Lock 121.22837012106777 ns/iter 122.0241275033822 ns/iter 0.99
JSON_String_Equal/10 5.6557095884104225 ns/iter 5.805640549202992 ns/iter 0.97
JSON_String_Equal/100 5.41370805767281 ns/iter 5.698044275313943 ns/iter 0.95
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8280984162496426 ns/iter 0.8077840838958594 ns/iter 1.03
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.718684304624199 ns/iter 3.7330192388891823 ns/iter 1.00
JSON_String_Fast_Hash/10 2.027995453377608 ns/iter 2.054200506416629 ns/iter 0.99
JSON_String_Fast_Hash/100 2.0194888203830192 ns/iter 2.056108633137606 ns/iter 0.98
JSON_String_Key_Hash/10 1.5194723009625855 ns/iter 1.5502688306856098 ns/iter 0.98
JSON_String_Key_Hash/100 2.0632830169740703 ns/iter 2.0699706951794954 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 1.8608094053755413 ns/iter 1.8570757302744108 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.0170726674629336 ns/iter 2.0214743949480414 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 1.8246472049551847 ns/iter 1.8710601381824672 ns/iter 0.98
Pointer_Object_Traverse 61.40948509143745 ns/iter 57.915578368698284 ns/iter 1.06
Pointer_Object_Try_Traverse 38.4757057490783 ns/iter 38.77973408532813 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 170.56790540673393 ns/iter 169.95327395678524 ns/iter 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.