mirror of https://github.com/CGAL/cgal
added benchark stuff:
* collect *.bff files, according to path/filename pattern * create tar-files with unique filename * provide links from web page to those tar-files, included in the manual (below doc_html/benchmarks/)
This commit is contained in:
parent
7564197ff6
commit
79c1bde675
|
|
@ -39,7 +39,7 @@ LATEX_CONV_INPUTS = .
|
||||||
|
|
||||||
# C++ Compiler Options:
|
# C++ Compiler Options:
|
||||||
# CXXFLAGS = -v
|
# CXXFLAGS = -v
|
||||||
CXXFLAGS = -g -O2
|
CXXFLAGS = -g -O0
|
||||||
|
|
||||||
# C Compiler: Gnu gcc 2.6.3 (or above) or the usual system cc:
|
# C Compiler: Gnu gcc 2.6.3 (or above) or the usual system cc:
|
||||||
# CC = gcc
|
# CC = gcc
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,11 @@
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
typedef std::map< string, string, Case_insensitive_string_greater_than > String_map;
|
|
||||||
typedef hash_map< string, String_map > String_map_table;
|
|
||||||
|
|
||||||
String_map_table string_map_table;
|
typedef std::map< string, string, Case_insensitive_string_greater_than > String_map;
|
||||||
|
hash_map< string, String_map > sorted_map_table;
|
||||||
|
|
||||||
|
hash_map< string, hash_map< string, string > > hash_map_table;
|
||||||
|
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
// External visible functions
|
// External visible functions
|
||||||
|
|
@ -1328,7 +1329,7 @@ sorted_map_add_to( const string&, string param[], size_t n, size_t opt) {
|
||||||
if( value[0] == '\\' )
|
if( value[0] == '\\' )
|
||||||
value = macroX( value );
|
value = macroX( value );
|
||||||
|
|
||||||
string_map_table[name][ key ] = value;
|
sorted_map_table[name][ key ] = value;
|
||||||
return string();
|
return string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1341,7 +1342,7 @@ sorted_map_foreach( const string&, string param[], size_t n, size_t opt) {
|
||||||
if( func[0] != '\\' )
|
if( func[0] != '\\' )
|
||||||
return string("!! Error: argument to \\lciSortedMapForeach has to be a function");
|
return string("!! Error: argument to \\lciSortedMapForeach has to be a function");
|
||||||
|
|
||||||
const String_map& m = string_map_table[name];
|
const String_map& m = sorted_map_table[name];
|
||||||
string func_params[2];
|
string func_params[2];
|
||||||
Macro_item item = fetchMacro( func );
|
Macro_item item = fetchMacro( func );
|
||||||
for( String_map::const_iterator it = m.begin(); it != m.end(); ++it ) {
|
for( String_map::const_iterator it = m.begin(); it != m.end(); ++it ) {
|
||||||
|
|
@ -1360,7 +1361,7 @@ string
|
||||||
sorted_map_clear( const string&, string param[], size_t n, size_t opt) {
|
sorted_map_clear( const string&, string param[], size_t n, size_t opt) {
|
||||||
NParamCheck( 1, 0);
|
NParamCheck( 1, 0);
|
||||||
string name = param[0];
|
string name = param[0];
|
||||||
string_map_table[name].clear();
|
sorted_map_table[name].clear();
|
||||||
return string();
|
return string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1368,12 +1369,61 @@ string
|
||||||
sorted_map_is_empty( const string&, string param[], size_t n, size_t opt) {
|
sorted_map_is_empty( const string&, string param[], size_t n, size_t opt) {
|
||||||
NParamCheck( 1, 0);
|
NParamCheck( 1, 0);
|
||||||
string name = param[0];
|
string name = param[0];
|
||||||
if( string_map_table[name].empty() )
|
if( sorted_map_table[name].empty() )
|
||||||
return string("\\lcTrue");
|
return string("\\lcTrue");
|
||||||
else
|
else
|
||||||
return string("\\lcFalse");
|
return string("\\lcFalse");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* hash maps */
|
||||||
|
|
||||||
|
string
|
||||||
|
hash_map_insert( const string&, string param[], size_t n, size_t opt) {
|
||||||
|
NParamCheck( 3, 0);
|
||||||
|
string name = param[0];
|
||||||
|
string key = param[1];
|
||||||
|
string value = param[2];
|
||||||
|
|
||||||
|
crop_string( key );
|
||||||
|
crop_string( value );
|
||||||
|
|
||||||
|
if( key[0] == '\\' )
|
||||||
|
key = macroX( key );
|
||||||
|
if( value[0] == '\\' )
|
||||||
|
value = macroX( value );
|
||||||
|
crop_string( name );
|
||||||
|
crop_string( key );
|
||||||
|
crop_string( value );
|
||||||
|
|
||||||
|
hash_map_table[name][ key ] = value;
|
||||||
|
return string();
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
hash_map_is_defined( const string&, string param[], size_t n, size_t opt) {
|
||||||
|
NParamCheck( 2, 0);
|
||||||
|
string name = param[0];
|
||||||
|
string key = param[1];
|
||||||
|
if( hash_map_table[name].find( key ) == hash_map_table[name].end() )
|
||||||
|
return string("\\lcFalse");
|
||||||
|
else
|
||||||
|
return string("\\lcTrue");
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
hash_map_get( const string&, string param[], size_t n, size_t opt) {
|
||||||
|
NParamCheck( 2, 0);
|
||||||
|
string name = param[0];
|
||||||
|
string key = param[1];
|
||||||
|
return hash_map_table[name][key];
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
hash_map_clear( const string&, string param[], size_t n, size_t opt) {
|
||||||
|
NParamCheck( 1, 0);
|
||||||
|
hash_map_table[ param[0] ].clear();
|
||||||
|
return string();
|
||||||
|
}
|
||||||
|
|
||||||
/* regular expressions */
|
/* regular expressions */
|
||||||
|
|
||||||
|
|
@ -1439,12 +1489,17 @@ string
|
||||||
handle_shell_command( const string&, string param[], size_t n, size_t opt) {
|
handle_shell_command( const string&, string param[], size_t n, size_t opt) {
|
||||||
NParamCheck( 1, 0);
|
NParamCheck( 1, 0);
|
||||||
string cmd = param[0];
|
string cmd = param[0];
|
||||||
std::stringstream out, err;
|
std::stringstream out, err, exitcode;
|
||||||
int retval = execute_shell_command( cmd, out, err );
|
int retval = execute_shell_command( cmd, out, err );
|
||||||
if (retval == 0 )
|
exitcode << retval;
|
||||||
return out.str();
|
insertInternalGlobalMacro( "\\lciShellExitCode", exitcode.str() );
|
||||||
else
|
insertInternalGlobalMacro( "\\lciShellStdout", out.str() );
|
||||||
return string("\\lciError{error while executing " + cmd + "}");
|
insertInternalGlobalMacro( "\\lciShellStderr", err.str() );
|
||||||
|
if( retval != 0 ) {
|
||||||
|
return string("\\lciError{error while executing \"" + cmd + "\". error log:" + err.str());
|
||||||
|
} else {
|
||||||
|
return string();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1523,6 +1578,11 @@ void init_internal_macros() {
|
||||||
insertInternalGlobalMacro( "\\lciSortedMapClear", sorted_map_clear,1 );
|
insertInternalGlobalMacro( "\\lciSortedMapClear", sorted_map_clear,1 );
|
||||||
insertInternalGlobalMacro( "\\lciSortedMapIsEmpty", sorted_map_is_empty,1 );
|
insertInternalGlobalMacro( "\\lciSortedMapIsEmpty", sorted_map_is_empty,1 );
|
||||||
|
|
||||||
|
insertInternalGlobalMacro( "\\lciHashMapInsert", hash_map_insert,3 );
|
||||||
|
insertInternalGlobalMacro( "\\lciHashMapIsDefined", hash_map_is_defined,2 );
|
||||||
|
insertInternalGlobalMacro( "\\lciHashMapGet", hash_map_get,2 );
|
||||||
|
insertInternalGlobalMacro( "\\lciHashMapClear", hash_map_clear,1 );
|
||||||
|
|
||||||
insertInternalGlobalMacro( "\\lciIfFileExists", if_file_exists, 1);
|
insertInternalGlobalMacro( "\\lciIfFileExists", if_file_exists, 1);
|
||||||
insertInternalGlobalMacro( "\\lciCopyFile", copy_file, 2);
|
insertInternalGlobalMacro( "\\lciCopyFile", copy_file, 2);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1147,9 +1147,69 @@
|
||||||
|
|
||||||
|
|
||||||
\newcommand{\ccBenchmarkInstance}[1]{
|
\newcommand{\ccBenchmarkInstance}[1]{
|
||||||
\lciShellCommand{echo bla}
|
\begingroup
|
||||||
|
\def\lciBenchmarkPath{}
|
||||||
|
\lciShellCommand{perl -e '
|
||||||
|
$location = "#C1";
|
||||||
|
$pattern="-name \"*.bff\"";
|
||||||
|
if( $location =~ /\/([^\/]*\*[^\/]*)$/ ) {
|
||||||
|
$pattern = " -name \"$1\"";
|
||||||
|
$location = $`;
|
||||||
|
}
|
||||||
|
if( $location =~ /\/$/ ) { $location =$`; }
|
||||||
|
$benchname=$location;
|
||||||
|
if( $benchname =~ /^[^\/]+\/[^\/]+\/(.*)$/ ) { $tarname = $1; }
|
||||||
|
$benchname =~ s/\//__/g;
|
||||||
|
$benchname =~ s/_data_//;
|
||||||
|
if( ! -d $location && -d "../benchmark/$location" ) {
|
||||||
|
$location = "../benchmark/$location";
|
||||||
|
}
|
||||||
|
print "\\def\\benchlocation{$location}\\def\\benchpattern{$pattern}\\def\\benchname{$benchname}";
|
||||||
|
'
|
||||||
|
}
|
||||||
|
\lciShellStdout
|
||||||
|
\ccBenchmarkGetUniqeBenchname{\benchname}{\uniquebenchname}
|
||||||
|
%\begin{alltt}
|
||||||
|
%location = \benchlocation
|
||||||
|
%
|
||||||
|
%pattern = \benchpattern
|
||||||
|
%
|
||||||
|
%tarname = \uniquebenchname
|
||||||
|
%
|
||||||
|
%\end{alltt}
|
||||||
|
\ccBenchmarkInstanceX{\benchlocation}{\benchpattern}{\uniquebenchname}{\lciTmpPath}
|
||||||
|
\endgroup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\gdef\lciBenchmarkTarnameCounter{0}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\ccBenchmarkGetUniqeBenchname}[2]{%
|
||||||
|
\lciHashMapIsDefined{tarnames}{#XC1}{}{\lciHashMapInsert{tarnames}{#XC1}{0}}%
|
||||||
|
\savebox{\benchvalue}{\lciHashMapGet{tarnames}{#XC1}}%
|
||||||
|
\lciGlobalAddTo{\benchvalue}{1}%
|
||||||
|
\ccBenchmarkGetFreshTarnameX{#XC1}{\benchvalue}%
|
||||||
|
\begin{alltt}%
|
||||||
|
\savebox{#C2}{#C1__\benchvalue{}}%
|
||||||
|
\end{alltt}%
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\ccBenchmarkGetFreshTarnameX}[2]{%
|
||||||
|
\lciHashMapInsert{tarnames}{#1}{#XC2}%
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\ccBenchmarkInstanceX}[4]{
|
||||||
|
\lciShellCommand{
|
||||||
|
OLDPWD=`pwd`;
|
||||||
|
mkdir -p #XC4/benchmarks/#XC3;
|
||||||
|
cd #XC4/benchmarks;
|
||||||
|
ln -s `find $OLDPWD/#XC1 #XC2` #XC3;
|
||||||
|
tar -czhf #XC3.tar.gz #XC3;
|
||||||
|
rm -rf #XC3;
|
||||||
|
cd $OLDPWD;
|
||||||
|
}
|
||||||
|
\lcRawHtml{<a href="../benchmarks/#XC3.tar.gz">#XC3.tar.gz</a>}
|
||||||
|
}
|
||||||
% ___________________________________________________________________________
|
% ___________________________________________________________________________
|
||||||
% ###########################################################################
|
% ###########################################################################
|
||||||
% | EOF
|
% | EOF
|
||||||
|
|
|
||||||
|
|
@ -2077,9 +2077,9 @@ td.TocChapter { font-weight: normal; }
|
||||||
{\gdef\lciCurrentSaveboxName{#C1}\lciPushOutput{savebox}}
|
{\gdef\lciCurrentSaveboxName{#C1}\lciPushOutput{savebox}}
|
||||||
{\lciPopOutput\lciStoreSaveboxX{\lciCurrentSaveboxName}}
|
{\lciPopOutput\lciStoreSaveboxX{\lciCurrentSaveboxName}}
|
||||||
|
|
||||||
\newcommand{\sbox}[2]{
|
\newcommand{\sbox}[2]{%
|
||||||
\begin{savebox}{#1}%
|
\begin{savebox}{#1}%
|
||||||
#2
|
#2%
|
||||||
\end{savebox}%
|
\end{savebox}%
|
||||||
}
|
}
|
||||||
\newcommand{\savebox}[2]{\sbox{#1}{#2}}
|
\newcommand{\savebox}[2]{\sbox{#1}{#2}}
|
||||||
|
|
|
||||||
|
|
@ -599,10 +599,18 @@ convert() {
|
||||||
done
|
done
|
||||||
cd $CurrentDir
|
cd $CurrentDir
|
||||||
done
|
done
|
||||||
|
cd $CurrentDir
|
||||||
|
|
||||||
|
lgout "pwd: `pwd`"
|
||||||
cp -r ${ConfigHtml}/Biblio ${OutDir}
|
cp -r ${ConfigHtml}/Biblio ${OutDir}
|
||||||
|
|
||||||
cp ${TmpDir}/comments.xml ${OutDir}
|
cp ${TmpDir}/comments.xml ${OutDir}
|
||||||
|
if [ -d ${TmpDir}/benchmarks ] ; then
|
||||||
|
mkdir -p ${OutDir}/benchmarks
|
||||||
|
cp -r ${TmpDir}/benchmarks/*.tar.gz ${OutDir}/benchmarks
|
||||||
|
else
|
||||||
|
lgout -n "cannot find benchmarks!"
|
||||||
|
fi
|
||||||
|
|
||||||
# finish, write timing to logfile and close it
|
# finish, write timing to logfile and close it
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -3357,6 +3357,7 @@ Reference~Manual}%
|
||||||
\newcommand{\ccPkgHowToCiteCgal}[1]{}
|
\newcommand{\ccPkgHowToCiteCgal}[1]{}
|
||||||
\newenvironment{ccPkgDescription}{\ccPkgName}{}
|
\newenvironment{ccPkgDescription}{\ccPkgName}{}
|
||||||
|
|
||||||
|
\newcommand{\ccBenchmarkInstance}[1]{}
|
||||||
% ___________________________________________________________________________
|
% ___________________________________________________________________________
|
||||||
% ###########################################################################
|
% ###########################################################################
|
||||||
% | EOF
|
% | EOF
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue