Domanda

Il problema è : Dato un certo numero di librerie di programmazione con portata simile o uguale (ad esempio parser XML, regex, marcatura, ...); ci sono strumenti, con cui si possono eseguire test di performance su queste librerie e confrontare (e generare report), anche se le librerie possono essere scritte in diversi linguaggi di programmazione (come Java, C #, Ruby, Python, Perl, ...) ?

Ho guardato questi opensourcetesting.org/performance.php , ma nessuno di loro montata nella (un po 'sfocata) requisito di cui sopra.

Ci sono toolkit o quadri là fuori per il cross-language test di performance cross-platform?

Grazie.

È stato utile?

Soluzione

Non vorrei provare a utilizzare un unico kit di strumenti per più lingue. Questo è improbabile che tirare fuori il meglio (o anche alla media) le prestazioni per ogni app.

Invece, vorrei provare a venire con un disegno quadro che definisce che cosa sta andando a testare, e dispone di una serie di dati comune. Poi ogni lingua / libreria in grado di fornire il proprio quadro applicazione , che mette alla prova le operazioni che sono appropriati per quella libreria. In questo modo le operazioni possono essere "logicamente equivalenti", anche se non usano i esatte stessa sintassi / chiamate. Si finisce per testare il idiomatica codice per quella libreria / lingua, piuttosto che solo un minimo comune denominatore.

Questo è l'approccio che ho preso per l'analisi comparativa buffer protocollo. Finora il mio quadro molto di base ha implementazioni in C # e Java, e ora sto scrivendo un quadro più ricco che consente tutta una "sceneggiatura punto di riferimento" per essere eseguito. Un obiettivo ideale è che diverse implementazioni all'interno della stessa piattaforma (ad esempio diverse implementazioni NET di buffer protocollo) devono essere in grado di agganciare nello stesso codice comparativa core con poco sforzo.

La cosa importante, a mio avviso, è quello di avere un insieme comune di operazioni (anche se non sono tutti implementati da tutti le biblioteche) e dati comuni impostato. Questo è l'unico modo in cui i parametri di riferimento possono essere significative.

Altri suggerimenti

Se possibile, sarebbe la migliore per utilizzare una qualche forma di iniezione di dipendenza in modo da poter collegare fuori un modulo e passare con un altro. Si avrebbe bisogno di creare un'interfaccia unica per tali librerie prima che tho (involucro che è), che fa un lavoro più duro ma disegno complessivo migliore. Sul lato positivo, se si vuole punto di riferimento in precedenza l'interfaccia non deve essere completa ma solo per esporre ciò che si pensa possa essere più benefitial quando perf. è in questione.

Le capacità molto molto dipendono dalla lingua usata.

Non mi piacciono i test artificiali. Essi sono il più delle volte inacurate IMO, le persone tendono a trascurare che una funzione di libreria fa più o meno di altri funzione di libreria mentre entrambi sembrano la stessa cosa. Raramente ho incontrato parametri di riferimento che non hanno quel tipo di proprietà.

Sugli altri lati, raramente v'è una cosa come totalmente meglio biblioteca. Molte librerie presenti buone prestazioni in alcuni scenari in cui altre librerie simili possono succhiare, e viceversa.

Quindi, se le prestazioni è la cosa più importante per la vostra applicazione, la cosa migliore da fare IMO è quello di creare un'interfaccia per le operazioni che si desidera importare, quindi plug-in / out paio di librerie e vedere le differenze di punti di riferimento reali, parametri di riferimento della vostra applicazione in azione, non qualche artificiale matematica mumbo Jumbo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top