[前][次][番号順一覧][スレッド一覧]

mysql:1220

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Wed, 08 Sep 1999 02:28:05 +0900
Subject: [mysql 01220] Re: new myodbc

とみたです。

At Fri, 27 Aug 1999 14:27:20 +0900,
takeshi@xxxxxxxxxx wrote:

> これはひどいですね。
>  EUC 版は 全て一度漢字変換を通しているから
>   -DDEBUG でコンパイルしてるから
>  コンパイル時にまだ最高の最適フラグを立ててない
> が効いているのかもしれません。
> SJIS 版だとどうでしょう。
> EUC に比べて処理はぐっと少ないはずなので、
> もし SJIS 版でも同じくらい遅ければ、
> 他の要因を疑わなくてはなりません。

これですけど、メモリの確保&解放に時間喰ってるってことはないでしょうか。

文字列項目1個ごとに、malloc & free を行なっているので、10項目 x 5000レ
コードのテーブルだと、50000回 malloc & free を行なうことになります。

EUC→SJIS(データ取り出し時)の場合は、バイト数は増えることないから、メ
モリの確保&解放するんではなく、EUC 領域を SJIS データで上書きするという
手はどうでしょう?

# あまり美しくないけど…。

具体的にはこんな感じ(試してません…)。


*** results.c.orig	Wed Sep  8 02:21:07 1999
--- results.c	Wed Sep  8 02:21:45 1999
***************
*** 462,471 ****
  		if (field->flags & BINARY_FLAG) break;
  	case FIELD_TYPE_STRING:
  	case FIELD_TYPE_VAR_STRING:
! 		euc_value = value;
! 		value = (char *)euc_to_sjis(euc_value, length);
  		length = strlen(value);
- 		my_free((gptr)euc_value, MYF(0));
  	}
    }
  #endif KANJI
--- 462,469 ----
  		if (field->flags & BINARY_FLAG) break;
  	case FIELD_TYPE_STRING:
  	case FIELD_TYPE_VAR_STRING:
! 		euc_to_sjis(value, length);
  		length = strlen(value);
  	}
    }
  #endif KANJI

*** kanji.c.orig	Wed Sep  8 02:19:20 1999
--- kanji.c	Wed Sep  8 02:20:12 1999
***************
*** 101,107 ****
   Convert FROM contain EUC codes to SHIFT JIS codes
   return converted buffer
  ********************************************************************/
! char *euc_to_sjis(const char *euc, int euc_len)
  {
  	char *sjis;
  	int s;
--- 101,107 ----
   Convert FROM contain EUC codes to SHIFT JIS codes
   return converted buffer
  ********************************************************************/
! char *euc_to_sjis(char *euc, int euc_len)
  {
  	char *sjis;
  	int s;
***************
*** 109,116 ****
  
  	if (euc_len == SQL_NTS)
  		euc_len = strlen(euc);
! 	sjis = my_malloc(euc_len * 2 + 1, MYF(0));
! 	if (!sjis) return NULL;
  
  	s = 0;
  	d = 0;
--- 109,115 ----
  
  	if (euc_len == SQL_NTS)
  		euc_len = strlen(euc);
! 	sjis = euc;
  
  	s = 0;
  	d = 0;


--
とみたまさひろ <tommy@xxxxxxxxxx>

[前][次][番号順一覧][スレッド一覧]

      1161 1999-08-26 20:08 [<takeshi@xxxxxxxxxx>] new myodbc                              
      1163 1999-08-26 21:13 ┣["Sugawara Hajime" <s]                                       
      1164 1999-08-27 08:36 ┃┗[<takeshi@xxxxxxxxxx>]                                     
      1165 1999-08-27 10:54 ┃ ┗["Sugawara Hajime" <s]                                   
      1168 1999-08-27 14:28 ┃  ┗[<takeshi@xxxxxxxxxx>]                                 
      1166 1999-08-27 11:14 ┗["Shoku Yanagawa" <ya]                                       
      1167 1999-08-27 14:27  ┗[<takeshi@xxxxxxxxxx>]                                     
      1169 1999-08-27 14:48   ┣["Shoku Yanagawa" <ya]                                   
      1186 1999-09-01 14:05   ┃┗[<takeshi@xxxxxxxxxx>]                                 
      1197 1999-09-02 16:23   ┃ ┗["Sugawara Hajime" <s]                               
      1198 1999-09-02 17:02   ┃  ┗[<takeshi@xxxxxxxxxx>]                             
      1199 1999-09-02 17:18   ┃   ┗["Sugawara Hajime" <s]                           
      1200 1999-09-02 19:39   ┃    ┗[<takeshi@xxxxxxxxxx>]                         
      1219 1999-09-08 00:18   ┃     ┗[<takeshi@xxxxxxxxxx>]                       
      1223 1999-09-08 10:22   ┃      ┣["Sugawara Hajime" <s]                     
      1224 1999-09-08 12:21   ┃      ┃┗[<takeshi@xxxxxxxxxx>]                   
      1225 1999-09-08 14:17   ┃      ┃ ┗[kaiser <kaiser@xxxxx]                 
      1232 1999-09-09 15:33   ┃      ┗["Shoku Yanagawa" <ya]                     
      1234 1999-09-09 15:53   ┃       ┗[<takeshi@xxxxxxxxxx>]                   
      1235 1999-09-09 16:52   ┃        ┗["Shoku Yanagawa" <ya]                 
->    1220 1999-09-08 02:28   ┗[とみたまさひろ <tomm]                                   
      1221 1999-09-08 03:23    ┗[<takeshi@xxxxxxxxxx>]                                 
      1222 1999-09-08 04:02     ┣[kaiser <kaiser@xxxxx] Re: new myodbc EUC            
      1233 1999-09-09 15:48     ┃┗["Shoku Yanagawa" <ya]                             
      1227 1999-09-09 00:41     ┗[とみたまさひろ <tomm]                               
      1228 1999-09-09 09:30      ┗[<takeshi@xxxxxxxxxx>]