[ http://issues.apache.org/jira/browse/LUCENE-675?page=all ]

Doron Cohen updated LUCENE-675:
-------------------------------

    Attachment: timedata.zip

I tried it and it is working nice! - 
1st run downloaded the documents from the Web before starting to index. 
2nd run started right off - as input docs are already in place - great. 

Seems the only output is what is printed to stdout, right? 

I got something like this: 
----------------------------
     [echo] Working Directory: work
     [java] Testing 4 different permutations.
     [java] #-- ID: td-00_10_10, Sun Nov 05 22:40:49 PST 2006, heap=1065484288 
--
     [java] # source=work\reuters-out, [EMAIL 
PROTECTED]:\devoss\lucene\java\trunk\contrib\benchmark\work\index
     [java] # maxBufferedDocs=10, mergeFactor=10, compound=true, optimize=true
     [java] # Query data: R-reopen, W-warmup, T-retrieve, N-no
     [java] # qd-0110 R W NT [body:salomon]
     [java] # qd-0111 R W T [body:salomon]
     [java] # qd-0100 R NW NT [body:salomon]
...
     [java] # qd-14011 NR W T [body:fo*]
     [java] # qd-14000 NR NW NT [body:fo*]
     [java] # qd-14001 NR NW T [body:fo*]

     [java] Start Time: Sun Nov 05 22:41:38 PST 2006
     [java]  - processed 500, run id=0
     [java]  - processed 1000, run id=0
     [java]  - processed 1500, run id=0
     [java]  - processed 2000, run id=0
     [java] End Time: Sun Nov 05 22:41:48 PST 2006
     [java] warm = Warm Index Reader
     [java] srch = Search Index
     [java] trav = Traverse Hits list, optionally retrieving document

     [java] # testData id       operation       runCnt  recCnt  rec/s   
avgFreeMem      avgTotalMem
     [java] td-00_100_100       addDocument     1       2000    472.0321        
4493681 22611558
     [java] td-00_100_100       optimize        1       1       2.857143        
4229488 22716416
     [java] td-00_100_100       qd-0110-warm    1       2000    40000.0 4250992 
22716416
     [java] td-00_100_100       qd-0110-srch    1       1       Infinity        
4221288 22716416
...
     [java] td-00_100_100       qd-4110-srch    1       1       Infinity        
3993624 22716416
     [java] td-00_100_100       qd-4110-trav    1       0       NaN     3993624 
22716416
     [java] td-00_100_100       qd-4111-warm    1       2000    50000.0 3853192 
22716416
...
BUILD SUCCESSFUL
Total time: 1 minute 0 seconds
----------------------------

I think the "infinity" and "NAN" are caused by op time too short for 
divide-by-sec.
This can be avoided by modifying getRate() in TimeData:
  public double getRate() {
    double rps = (double) count * 1000.0 / (double) (elapsed>0 ? elapsed : 1);
    return rps;
  }

I like much the logic of loading test data from the Web, and the scaleUp and 
maximumDocumentsToIndex params are handy. 

It seems that all the test logic and some of its data (queries) are java coded. 
I initially thought of a setting where we define tasks/jobs that are 
parameterized, like:

- createIndex(params)
- writeToIndex(params):
  - addDocs()
  - optimize()
- readFromIndex(params):
  - searchIndex()
  - fetchData()

..and compose a test by an XML that says which of these simple jobs to run, 
with what params, in which order, serial/parallel, how long/often etc. 
Then creating a different test is as easy as creating a different XML that 
configures that test. 

On the other hand, chances are, I know, that most useful cases would be those 
already defined here - standard and micro-standard, so can ask "why bothering 
changing to define these building blocks". I am not sure here, but thought I'll 
bring it up. 

About Using the driver - seems nice and clean to me. I don't know the Digester 
but it seems to read the config from the XML correctly.

Other comments:
1. I think there is a redundant call to params.showRunData(params.getId()) in 
runBenchmark(File,Options);
2. Seems that rec/sec would be a bit more accurately computed by aggregating 
elapsed times (instead of rate) in showRunData()
3. If TimeData not found (only memData) I think additional 0.0 should be printed
4. columns allignments with tabs and floats is imperfect.:-)
5. It would be nice I think to also get a summary of the results by "task" - 
e.g. srch, optimize, something like:
     [java] # testData id     operation           runCnt     recCnt          
rec/s       avgFreeMem      avgTotalMem
     [java]                   warm                    60       2000       
42,628.8        8,235,758       23,048,192
     [java]                   srch                   120          1          
571.4        8,300,613       23,048,192
     [java]                   optimize                 1          1            
2.9        9,375,732       23,048,192
     [java]                   trav                   120        107       
30,517.8        8,326,046       23,048,192
     [java]                   addDocument              1       2000          
441.8        7,310,929       22,206,872

Attached timedata.zip has modifies TimeData.java and TestData.java for [1 to 5] 
above, and for the NAN/inifinite. 

> Lucene benchmark: objective performance test for Lucene
> -------------------------------------------------------
>
>                 Key: LUCENE-675
>                 URL: http://issues.apache.org/jira/browse/LUCENE-675
>             Project: Lucene - Java
>          Issue Type: Improvement
>            Reporter: Andrzej Bialecki 
>         Assigned To: Grant Ingersoll
>         Attachments: benchmark.patch, BenchmarkingIndexer.pm, 
> extract_reuters.plx, LuceneBenchmark.java, LuceneIndexer.java, timedata.zip
>
>
> We need an objective way to measure the performance of Lucene, both indexing 
> and querying, on a known corpus. This issue is intended to collect comments 
> and patches implementing a suite of such benchmarking tests.
> Regarding the corpus: one of the widely used and freely available corpora is 
> the original Reuters collection, available from 
> http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/www/data/news20.tar.gz 
> or 
> http://people.csail.mit.edu/u/j/jrennie/public_html/20Newsgroups/20news-18828.tar.gz.
>  I propose to use this corpus as a base for benchmarks. The benchmarking 
> suite could automatically retrieve it from known locations, and cache it 
> locally.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to