public static function getValues( $doMeasure, $output, $returnCode=null )
    {
        if ( $doMeasure )
        {
            // look up any perf data provider, and ask each one to give us its values
            foreach( eZPerfLoggerINI::variable( 'GeneralSettings', 'VariableProviders' ) as $measuringClass )
            {
                /// @todo !important check that $measuringClass exposes the correct interface
                $measured = call_user_func_array( array( $measuringClass, 'measure' ), array( $output, $returnCode ) );
                if ( is_array( $measured ) )
                {
                    self::recordValues( $measured );
                }
                else
                {
                    eZPerfLoggerDebug::writeError( "Perf measuring class $measuringClass did not return an array of data", __METHOD__ );
                }
            }
        }
        return self::$custom_variables;
    }