Two options that come to mind.
1. Use Externalizable, DataInputStream/DataOutputStream to
serialize/deserialize entire array.
2. Use SQLite

On Fri, Apr 19, 2019 at 6:23 AM Gareth Murfin <[email protected]>
wrote:

> actually unzip and parse takes only 3 seconds on my device! so might be
> just fine!
>
> On Friday, April 19, 2019 at 8:31:15 PM UTC+8, Gareth Murfin wrote:
>>
>> Im not sure exactly what I want here, but basically I have to read in a
>> .txt file with 164,000 entries, each line needs to be string-tokenized. So
>> the code is easy but it obviously takes a loooong time to do this in Java
>> on a phone or desktop even. So I was wondering is there some other way to
>> do it, like do it once and save it as some sort of binary file that can be
>> loaded back into the ram at highspeed? Its probably a silly question really
>> but I am looking for ways to speed this up because this stuff is used as a
>> "realtime" search within the app so I cant exactly force the user to wait
>> 10 minutes everytime they load the app just to prepare the search data.
>>
>> MY CODE:
>>
>>
>>       hi.add(new Label("START"));
>>       List<LangHolder> allLineObjects = new ArrayList<LangHolder>();
>>       long start = System.currentTimeMillis();
>>         try
>>         {
>>             //The format of the comma-delimited data
>> is:{romaji},{kanji},{kana},{English gloss}
>>             //eg                                        doujou,   仝,
>>  どうじょう, 1. "as above" mark.
>>             _("Reading in search data now!");
>>             final String fileName = "/searchdata.txt";
>>             InputStream in =
>> Display.getInstance().getResourceAsStream(Form.class, fileName);
>>             String fileContents =
>> com.codename1.io.Util.readToString(in);// efficient
>>             _("Finished reading ("+fileContents.length()+"), now parse");
>>
>>            List<String> lines_ = StringUtil.tokenize(fileContents, '\n');
>>            for (int x=0; x<lines_.size(); x++)
>>            {
>>                 StringTokenizer st = new
>> StringTokenizer(lines_.get(x),",");
>>
>>                 int i=0;
>>                 String romaji = "";
>>                 String kanji = "";
>>                 String kana = "";
>>                 String english = "";
>>
>>
>>                 while (st.hasMoreElements())
>>                 {
>>                     String token = (String) st.nextElement();
>>                     switch (i)
>>                     {
>>                         case 0:romaji=token;break;
>>                         case 1:kanji=token;break;
>>                         case 2:kana=token;break;
>>                         case 3:english=token;break;
>>                         default:_("UNKNOWN STATE HERE PARSING CVS "+i);
>>                     }
>>                     i++;
>>                     if (i>3)
>>                     {
>>                         _(""+x+" ROMANJI: "+romaji+" KANJI: "+kanji+"
>> KANA:"+kana+" ENGLISH:"+english);
>>                         LangHolder lh = new
>> LangHolder(romaji,kanji,kana,english);
>>                         allLineObjects.add(lh);
>>                         romaji = "";
>>                         kanji = "";
>>                         kana = "";
>>                         english = "";
>>
>>                         i=0;
>>                     }
>>                 }
>>            }
>>            _("finished making search data, there are
>> "+allLineObjects.size()+" objects holding the info");
>>            long end = System.currentTimeMillis();
>>            _("time took "+((end-start)/1000)/60+" mins.");
>>            hi.add(new Label("finished making search data, there are
>> "+allLineObjects.size()+" objects holding the info"));
>>            hi.invalidate();
>>            hi.add(new Label("time took "+((end-start)/1000)/60+" mins."));
>>
>> EXAMPLE OF FILE:
>>
>> doujou,仝,どうじょう,1. "as above" mark.
>> kansuujizero,漢数字ゼロ,かんすうじゼロ,1. "kanji" zero.
>> maru,○/〇,まる,1. circle (sometimes used for zero). 2. 'correct' (when
>> marking). 3. symbol used as a placeholder (either because a number of other
>> words could be used in that position, or because of censorship). 4. period.
>> 5. full stop. 6. maru mark. 7. semivoiced sound. 8. p-sound.
>> e-bi-shi-jixyun,ABC順,エービーシーじゅん,1. alphabetical order.
>> shi-dyi-pure-ya-,CDプレーヤー/CDプレイヤー,シーディープレイヤーシーディープレーヤー/シーディープレイヤー,1. CD
>> player.
>> shi-dyi-pureiya-,CDプレーヤー/CDプレイヤー,シーディープレイヤーシーディープレーヤー/シーディープレイヤー,1. CD
>> player.
>> enukixyou,N響,エヌきょう,1. NHK Symphony Orchestra.
>> o-bakku,Oバック,オーバック,1. O-back. 2. skirt with peek-a-boo hole in rump.
>> a-ruesunisannike-buru,RS232ケーブル,アールエスにさんにケーブル,1. rs232 cable.
>> texi-shatsu,Tシャツ,ティーシャツ,1. T-shirt.
>> texi-bakku,Tバック,ティーバック,1. T-back. 2. bikini thong.
>> aun'nokokyuu,あうんの呼吸/阿吽の呼吸,あうんのこきゅう,1. the harmonizing, mentally and
>> physically, of two parties engaged in an activity. 2. singing from the same
>> hymn-sheet. 3. dancing to the same beat.
>> meihaku,明白,めいはく,1. obvious. 2. clear. 3. plain. 4. evident. 5. apparent.
>> 6. explicit. 7. overt.
>> akarasama,明白/偸閑/白地,あからさま,1. plain. 2. frank. 3. candid. 4. open. 5.
>> direct. 6. straightforward. 7. unabashed. 8. blatant. 9. flagrant.
>> akudoi,悪どい,あくどい,1. gaudy. 2. showy. 3. excessive. 4. crooked. 5. vicious.
>> agetsurau,論う,あげつらう,1. to discuss. 2. to find fault with. 3. to criticize.
>> 4. to criticise.
>> asoko,彼処/彼所,あこあそこ/あすこ/かしこ/アソコ/あしこ/あこ,1. there (place physically distant
>> from both speaker and listener). 2. over there. 3. that place. 4. yonder.
>> 5. you-know-where. 6. genitals. 7. private parts. 8. nether regions. 9.
>> that far (something psychologically distant from both speaker and
>> listener). 10. that much. 11. that point.
>> ashiko,彼処/彼所,あこあそこ/あすこ/かしこ/アソコ/あしこ/あこ,1. there (place physically distant
>> from both speaker and listener). 2. over there. 3. that place. 4. yonder.
>> 5. you-know-where. 6. genitals. 7. private parts. 8. nether regions. 9.
>> that far (something psychologically distant from both speaker and
>> listener). 10. that much. 11. that point.
>> ako,彼処/彼所,あこあそこ/あすこ/かしこ/アソコ/あしこ/あこ,1. there (place physically distant
>> from both speaker and listener). 2. over there. 3. that place. 4. yonder.
>> 5. you-know-where. 6. genitals. 7. private parts. 8. nether regions. 9.
>> that far (something psychologically distant from both speaker and
>> listener). 10. that much. 11. that point.
>> asuko,彼処/彼所,あこあそこ/あすこ/かしこ/アソコ/あしこ/あこ,1. there (place physically distant
>> from both speaker and listener). 2. over there. 3. that place. 4. yonder.
>> 5. you-know-where. 6. genitals. 7. private parts. 8. nether regions. 9.
>> that far (something psychologically distant from both speaker and
>> listener). 10. that much. 11. that point.
>> kashiko,彼処/彼所,あこあそこ/あすこ/かしこ/アソコ/あしこ/あこ,1. there (place physically distant
>> from both speaker and listener). 2. over there. 3. that place. 4. yonder.
>> 5. you-know-where. 6. genitals. 7. private parts. 8. nether regions. 9.
>> that far (something psychologically distant from both speaker and
>> listener). 10. that much. 11. that point.
>> axtsutoiumani,あっという間に/あっと言う間に/あっとゆう間に/アッという間に/アッと言う間に/アッとゆう間に,アッとゆうまにあっというまに/あっとゆうまに/アッというまに/アッとゆうまに,1.
>> just like that. 2. in the twinkling of an eye. 3. in the blink of an eye.
>> 4. in the time it takes to say "ah!".
>> attoyuumani,あっという間に/あっと言う間に/あっとゆう間に/アッという間に/アッと言う間に/アッとゆう間に,アッとゆうまにあっというまに/あっとゆうまに/アッというまに/アッとゆうまに,1.
>> just like that. 2. in the twinkling of an eye. 3. in the blink of an eye.
>> 4. in the time it takes to say "ah!".
>> axtsutoyuumani,あっという間に/あっと言う間に/あっとゆう間に/アッという間に/アッと言う間に/アッとゆう間に,アッとゆうまにあっというまに/あっとゆうまに/アッというまに/アッとゆうまに,1.
>> just like that. 2. in the twinkling of an eye. 3. in the blink of an eye.
>> 4. in the time it takes to say "ah!".
>> attoiumani,あっという間に/あっと言う間に/あっとゆう間に/アッという間に/アッと言う間に/アッとゆう間に,アッとゆうまにあっというまに/あっとゆうまに/アッというまに/アッとゆうまに,1.
>> just like that. 2. in the twinkling of an eye. 3. in the blink of an eye.
>> 4. in the time it takes to say "ah!".
>> anou,,あのう/あの/あのー,1. say. 2. well. 3. errr ....
>> ano,,あのう/あの/あのー,1. say. 2. well. 3. errr ....
>> ano-,,あのう/あの/あのー,1. say. 2. well. 3. errr ....
>>
> --
> You received this message because you are subscribed to the Google Groups
> "CodenameOne Discussions" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> Visit this group at
> https://groups.google.com/group/codenameone-discussions.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/codenameone-discussions/ec425134-68f2-4285-a554-d2304c30c476%40googlegroups.com
> <https://groups.google.com/d/msgid/codenameone-discussions/ec425134-68f2-4285-a554-d2304c30c476%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>


-- 
Steve Hannah
Software Developer
Codename One
http://www.codenameone.com

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/CAGOYrKUdUFNZhqbAEsY9x%3DF8BTCBRHwicUAvwVGHHOz09kW_2w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to