mruby-set: remove statistic measurement code

This commit is contained in:
Yukihiro "Matz" Matsumoto
2025-06-19 18:55:43 +09:00
parent 7a1732d438
commit f44a7bc5db
-62
View File
@@ -21,19 +21,6 @@ KHASH_DEFINE(set, mrb_value, char, FALSE, mrb_obj_hash_code, mrb_eql)
#define SET_KHASH_IV MRB_SYM(khash)
/* Optional performance monitoring (disabled by default) */
#ifdef MRB_SET_ENABLE_STATS
static mrb_int set_operations_count = 0;
static mrb_int set_optimized_operations = 0;
#define SET_STAT_INC_TOTAL() (set_operations_count++)
#define SET_STAT_INC_OPTIMIZED() (set_optimized_operations++)
#else
#define SET_STAT_INC_TOTAL()
#define SET_STAT_INC_OPTIMIZED()
#endif
static void
set_free(mrb_state *mrb, void *ptr)
{
@@ -367,10 +354,8 @@ set_merge(mrb_state *mrb, mrb_value self)
mrb_raise(mrb, E_RUNTIME_ERROR, "uninitialized Set");
}
SET_STAT_INC_TOTAL();
if (mrb_obj_class(mrb, enum_obj) == mrb_obj_class(mrb, self)) {
/* Optimized path for Set objects - direct khash merge */
SET_STAT_INC_OPTIMIZED();
khash_t(set) *other_kh = set_get_khash(mrb, enum_obj);
if (other_kh) {
khiter_t k;
@@ -407,10 +392,8 @@ set_subtract(mrb_state *mrb, mrb_value self)
kh = set_get_khash(mrb, self);
if (!kh) return self;
SET_STAT_INC_TOTAL();
if (mrb_obj_class(mrb, enum_obj) == mrb_obj_class(mrb, self)) {
/* Optimized path for Set objects */
SET_STAT_INC_OPTIMIZED();
khash_t(set) *other_kh = set_get_khash(mrb, enum_obj);
if (other_kh) {
khiter_t k, del_k;
@@ -495,10 +478,8 @@ set_intersection(mrb_state *mrb, mrb_value self)
self_kh = set_get_khash(mrb, self);
if (!self_kh) return result_set;
SET_STAT_INC_TOTAL();
if (mrb_obj_class(mrb, enum_obj) == mrb_obj_class(mrb, self)) {
/* Optimized path for Set objects */
SET_STAT_INC_OPTIMIZED();
khash_t(set) *other_kh = set_get_khash(mrb, enum_obj);
if (other_kh) {
khiter_t k, self_k;
@@ -864,43 +845,6 @@ set_s_create(mrb_state *mrb, mrb_value klass)
return set;
}
#ifdef MRB_SET_ENABLE_STATS
/*
* call-seq:
* Set.stats -> hash
*
* Returns performance statistics (only available when compiled with MRB_SET_ENABLE_STATS).
*/
static mrb_value
set_s_stats(mrb_state *mrb, mrb_value klass)
{
mrb_value stats = mrb_hash_new(mrb);
mrb_hash_set(mrb, stats, mrb_str_new_lit(mrb, "total_operations"), mrb_fixnum_value(set_operations_count));
mrb_hash_set(mrb, stats, mrb_str_new_lit(mrb, "optimized_operations"), mrb_fixnum_value(set_optimized_operations));
if (set_operations_count > 0) {
double optimization_ratio = (double)set_optimized_operations / set_operations_count * 100.0;
mrb_hash_set(mrb, stats, mrb_str_new_lit(mrb, "optimization_percentage"), mrb_float_value(mrb, optimization_ratio));
}
return stats;
}
/*
* call-seq:
* Set.reset_stats -> nil
*
* Resets performance statistics.
*/
static mrb_value
set_s_reset_stats(mrb_state *mrb, mrb_value klass)
{
set_operations_count = 0;
set_optimized_operations = 0;
return mrb_nil_value();
}
#endif
void
mrb_mruby_set_gem_init(mrb_state *mrb)
{
@@ -964,12 +908,6 @@ mrb_mruby_set_gem_init(mrb_state *mrb)
mrb_define_method(mrb, set, "delete_all", set_delete_all, MRB_ARGS_ANY());
mrb_define_method(mrb, set, "include_all?", set_include_all_p, MRB_ARGS_ANY());
mrb_define_method(mrb, set, "include_any?", set_include_any_p, MRB_ARGS_ANY());
#ifdef MRB_SET_ENABLE_STATS
/* Performance monitoring methods */
mrb_define_class_method(mrb, set, "stats", set_s_stats, MRB_ARGS_NONE());
mrb_define_class_method(mrb, set, "reset_stats", set_s_reset_stats, MRB_ARGS_NONE());
#endif
}
void