Aggiunto test hashtable
git-svn-id: svn://10.65.10.50/branches/R_10_00@23156 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									42b2edda46
								
							
						
					
					
						commit
						d00d56e293
					
				| @ -406,31 +406,56 @@ bool TTest_application::test7(TLog_report& log) | ||||
| 	return ok; | ||||
| } | ||||
| 
 | ||||
| ostream* _out = NULL; | ||||
| 
 | ||||
| static void str_serialize(const TObject& obj) | ||||
| {  *_out << obj << '\n'; } | ||||
| 
 | ||||
| static bool str_deserialize(istream& i, TString& str) | ||||
| { | ||||
|   char* buff = str.get_buffer(50); | ||||
|   bool in_string = false; | ||||
|   while (!i.eof()) | ||||
|   { | ||||
|     char c = '\0'; i.get(c); | ||||
|     if ((c > '\0' && c < '0') || (c > '9' && c < '@') || (c>'Z' && c < 'a')) | ||||
|     { | ||||
|       if (in_string) | ||||
|         break; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|       *buff = c; | ||||
|       buff++; | ||||
|       in_string = true; | ||||
|     } | ||||
|   } | ||||
|   *buff = '\0'; | ||||
|   return in_string && str.full(); | ||||
| } | ||||
| 
 | ||||
| bool TTest_application::test8(TLog_report& log) | ||||
| { | ||||
|   static TArray parole(1024*1024); | ||||
| 
 | ||||
|   if (parole.empty())  | ||||
|   TString msg; | ||||
| 
 | ||||
|   const bool first_time = parole.empty(); | ||||
|   if (first_time)  | ||||
|   { | ||||
|     const clock_t start = start_progind(n, TR("Lettura big.txt con TArray")); | ||||
|     TString str; | ||||
|     TString80 str; | ||||
| 	  msg = TR("Lettura big.txt con TArray"); | ||||
|     log.log(0, msg); | ||||
|     const clock_t start = start_progind(1, msg); | ||||
|     ifstream big("recdesc/big.txt"); | ||||
|     while (!big.eof()) | ||||
|     while (str_deserialize(big, str)) | ||||
|     { | ||||
|       big >> str; | ||||
|       if (str.full()) | ||||
|       { | ||||
|         str.trim(); | ||||
|         if (str.len() <= 16) | ||||
|           parole.add(new TString16(str)); | ||||
|         else | ||||
|           parole.add(new TString80(str)); | ||||
|       } | ||||
|       parole.add(str); | ||||
|       _pi->add_status(0L);  | ||||
|     } | ||||
|     stop_progind(); | ||||
|   } | ||||
|    | ||||
|   TString msg; | ||||
|   const unsigned int n = parole.items(); | ||||
|   bool ok = n > 0; | ||||
| 
 | ||||
| @ -449,12 +474,22 @@ bool TTest_application::test8(TLog_report& log) | ||||
|       } | ||||
|     } | ||||
| 	  const clock_t t = stop_progind() - start; | ||||
| 	  msg.format("Lettura %ld parole in TAssoc_array %6ld msec - %5lg words per sec", n, t, 1000.0*n/t); | ||||
| 	  msg.format("TAssoc_array %ld(%ld) parole %6ld msec - %5lg wps", n, ass.items(), t, 1000.0*n/t); | ||||
|     log.log(0, msg); | ||||
| 
 | ||||
|     if (first_time) | ||||
|     { | ||||
|       TFilename fn; fn.tempdir(); fn.add("assoc.txt"); | ||||
|       _out = new ofstream(fn); | ||||
|       ass.for_each(str_serialize); | ||||
|       _out->flush(); | ||||
|       delete _out; | ||||
|       _out = NULL; | ||||
|     } | ||||
|   } | ||||
|   if (ok) | ||||
|   { | ||||
|     THash_table ash; | ||||
|     THash_table ash(1024*36); | ||||
|     const clock_t start = start_progind(n, TR("Lettura big.txt con THash_table")); | ||||
|     FOR_EACH_ARRAY_ITEM(parole, r, o) | ||||
|     { | ||||
| @ -467,8 +502,19 @@ bool TTest_application::test8(TLog_report& log) | ||||
|       } | ||||
|     } | ||||
| 	  const clock_t t = stop_progind() - start; | ||||
| 	  msg.format("Lettura %ld parole in THash_table  %6ld msec - %5lg words per sec", n, t, 1000.0*n/t); | ||||
| 	  msg.format("THash_table  %ld(%ld) parole %6ld msec - %5lg wps", n, ash.items(), t, 1000.0*n/t); | ||||
|     log.log(0, msg); | ||||
| 
 | ||||
|     if (first_time) | ||||
|     { | ||||
|       TFilename fn; fn.tempdir(); fn.add("hash.txt"); | ||||
|       _out = new ofstream(fn); | ||||
|       ash.for_each(str_serialize); | ||||
|       _out->flush(); | ||||
|       delete _out; | ||||
|       _out = NULL; | ||||
|     } | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
| 	if (!ok)  | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user