[Groonga-commit] groonga/groonga at bf48c20 [master] Reduce the number of grn_getenv() calls for grn_ctx::impl::mrb

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る