jemalloc在单线程上的效率问题

在android系统的单线程环境下,使用jemalloc比比使用慢很多,下面是测试代码

    int pointerCount = 1000000;
    std::vector<char*> pointers(pointerCount);
    LOG_TRACE("============ begin new ==============");
    std::chrono::time_point<std::chrono::system_clock> start, end;
    start = std::chrono::system_clock::now();
    for(int i = 0; i < pointerCount; i++)
    {
        char* psz = new char[64];
        pointers.push_back(psz);
    }
    for(auto p : pointers)
    {
        delete[] p;
    }
    end = std::chrono::system_clock::now();
    std::chrono::duration<double> elapsed_seconds = end-start;
    LOG_TRACE("================= elapsed_seconds: %fs", elapsed_seconds.count());
    LOG_TRACE("============ end new   ==============");

使用jemalloc所需的时间大概为1.1s,不使用的话大概是0.4s

下面是编译的脚本,最终生成armeabi,armeabi-v7a, x86
三个架构的.a和.so文件,是不是有什么设置设置错误了?

#! /bin/sh
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
host_os=`uname -s | tr "[:upper:]" "[:lower:]"`
build_os=`uname -m`
SRCDIR=$DIR/src

if [ ! -f "$DIR/configure" ]; then
    for i in autoconf; do
        echo "$i"
        $i
        if [ $? -ne 0 ]; then
            echo "Error $? in $i"
            exit 1
        fi
    done
fi

BASE_CONFIG=""
ARM_COMPILE_VERSION=4.8
X86_COMPILE_VERSION=4.8
NDK_HOST=darwin-x86

NDK=$NDK_ROOT
NDKABI=8
NDKVER=$NDK/toolchains/arm-linux-androideabi-$ARM_COMPILE_VERSION
NDKP=$NDKVER/prebuilt/$NDK_HOST/bin/arm-linux-androideabi-
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"

# Android/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
DESTDIR=$DIR/prebuilt/android/armeabi

export PATH=$PATH:$NDKVER/prebuilt/$NDK_HOST/bin
export CFLAGS="$NDKF" 
export LDFLAGS="$NDKF"
export CPPFLAGS="$NDKF"
export LIBS="-llog"
./configure --build=$build_os --host=arm-linux-androideabi --target=arm-linux-androideabi --prefix=$DESTDIR $BASE_CONFIG
if [ $? -ne 0 ]; then
    echo "Error $? in ./configure"
    exit 1
fi

make clean
make -j8 HOST_CC="gcc -m32" CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS="$NDKF"
make install

#exit 0

# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
DESTDIR=$DIR/prebuilt/android/armeabi-v7a
NDKARCH="-march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"
export CFLAGS="$NDKF $NDKARCH"
export LDFLAGS="$NDKF $NDKARCH"
export CPPFLAGS="$NDKF $NDKARCH"
./configure --build=$build_os --host=arm-linux-androideabi --target=arm-linux-androideabi --prefix=$DESTDIR $BASE_CONFIG
if [ $? -ne 0 ]; then
    echo "Error $? in ./configure"
    exit 1
fi
make clean
make -j8 HOST_CC="gcc -m32" CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS="$NDKF $NDKARCH"
make install


# Android/x86, x86 (i686 SSE3), Android 4.0+ (ICS)
NDKABI=14
NDKVER=$NDK/toolchains/x86-$X86_COMPILE_VERSION
NDKP=$NDKVER/prebuilt/$NDK_HOST/bin/i686-linux-android-
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-x86"
DESTDIR=$DIR/prebuilt/android/x86


export PATH=$PATH:$NDKVER/prebuilt/$NDK_HOST/bin
export CFLAGS="$NDKF"
export LDFLAGS="$NDKF"
export CPPFLAGS="$NDKF"
./configure --build=$build_os --host=i686-linux-android --target=i686-linux-android --prefix=$DESTDIR $BASE_CONFIG
if [ $? -ne 0 ]; then
    echo "Error $? in ./configure"
    exit 1
fi

make clean
make -j8 HOST_CC="gcc -m32" CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS="$NDKF"
make install

http://www.360doc.com/content/13/0915/09/8363527_314549128.shtml