Kouhei Sutou
null+****@clear*****
Wed May 13 11:54:16 JST 2015
Kouhei Sutou 2015-05-13 11:54:16 +0900 (Wed, 13 May 2015) New Revision: bf48c20b0a9f104fb61936f3d499e51d7440251a https://github.com/groonga/groonga/commit/bf48c20b0a9f104fb61936f3d499e51d7440251a Message: Reduce the number of grn_getenv() calls for grn_ctx::impl::mrb We just call them once on init. Modified files: lib/ctx.c lib/ctx_impl_mrb.c lib/grn_ctx_impl_mrb.h Modified: lib/ctx.c (+1 -0) =================================================================== --- lib/ctx.c 2015-05-13 11:37:41 +0900 (fb5bd89) +++ lib/ctx.c 2015-05-13 11:54:16 +0900 (9f98e90) @@ -834,6 +834,7 @@ grn_init(void) grn_rc rc; grn_ctx *ctx = &grn_gctx; grn_init_from_env(); + grn_ctx_impl_mrb_init_from_env(); grn_logger_init(); grn_query_logger_init(); CRITICAL_SECTION_INIT(grn_glock); Modified: lib/ctx_impl_mrb.c (+18 -6) =================================================================== --- lib/ctx_impl_mrb.c 2015-05-13 11:37:41 +0900 (4c1a2a3) +++ lib/ctx_impl_mrb.c 2015-05-13 11:54:16 +0900 (6e92f35) @@ -60,6 +60,23 @@ # include <mruby/variable.h> #endif /* GRN_WITH_MRUBY */ +static grn_bool grn_ctx_impl_mrb_mruby_enabled = GRN_TRUE; + +void +grn_ctx_impl_mrb_init_from_env(void) +{ + { + char grn_mruby_enabled_env[GRN_ENV_BUFFER_SIZE]; + grn_getenv("GRN_MRUBY_ENABLED", + grn_mruby_enabled_env, + GRN_ENV_BUFFER_SIZE); + if (grn_mruby_enabled_env[0] && + strcmp(grn_mruby_enabled_env, "no") == 0) { + grn_ctx_impl_mrb_mruby_enabled = GRN_FALSE; + } + } +} + #ifdef GRN_WITH_MRUBY static mrb_value mrb_kernel_load(mrb_state *mrb, mrb_value self) @@ -147,11 +164,7 @@ grn_ctx_impl_mrb_init_bindings(grn_ctx *ctx) void grn_ctx_impl_mrb_init(grn_ctx *ctx) { - char grn_mruby_enabled[GRN_ENV_BUFFER_SIZE]; - grn_getenv("GRN_MRUBY_ENABLED", - grn_mruby_enabled, - GRN_ENV_BUFFER_SIZE); - if (grn_mruby_enabled[0] && strcmp(grn_mruby_enabled, "no") == 0) { + if (!grn_ctx_impl_mrb_mruby_enabled) { ctx->impl->mrb.state = NULL; ctx->impl->mrb.base_directory[0] = '\0'; ctx->impl->mrb.module = NULL; @@ -162,7 +175,6 @@ grn_ctx_impl_mrb_init(grn_ctx *ctx) ctx->impl->mrb.groonga.operator_class = NULL; } else { mrb_state *mrb; - mrb = mrb_open(); ctx->impl->mrb.state = mrb; ctx->impl->mrb.base_directory[0] = '\0'; Modified: lib/grn_ctx_impl_mrb.h (+2 -1) =================================================================== --- lib/grn_ctx_impl_mrb.h 2015-05-13 11:37:41 +0900 (61cf088) +++ lib/grn_ctx_impl_mrb.h 2015-05-13 11:54:16 +0900 (3e46d2e) @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2013 Brazil + Copyright(C) 2013-2015 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -26,6 +26,7 @@ extern "C" { #endif +void grn_ctx_impl_mrb_init_from_env(void); void grn_ctx_impl_mrb_init(grn_ctx *ctx); void grn_ctx_impl_mrb_fin(grn_ctx *ctx); -------------- next part -------------- HTML����������������������������... ダウンロード