Erlang 나눗셈 성능 테스트

1361 단어 erlang언어
오리지널 글, 전재 출처: 서버 비아마추어 연구 - sunface
Go의 제법 테스트를 썼는데, 심혈래조는 Erlang의 것을 계속 테스트해 봅시다. (이 두 언어의 결과는 비교성이 없습니다. 전자는 전문적으로 점수를 매기는 Benchmark 라이브러리를 실현했기 때문입니다.)
-module(test_func).

-export([start/2]).

start(FirstType,SecondType) ->
    case FirstType of
        int ->
            case SecondType of
                int ->
                    start_int_int(16#7FFFFFFFFF,1000000);
                float ->
                    start_int_float(16#7FFFFFFFFF,1000000)
            end;
        float ->
            case SecondType of
                int ->
                    start_float_int(float(16#7FFFFFFFFF),1000000);
                float ->
                    start_float_float(float(16#7FFFFFFFFF),1000000)
            end
    end.

start_int_int(N,0) ->
    ok;
start_int_int(N,Times) ->
    start_int_int(N/3,Times-1).
    
start_int_float(N,0) ->
    ok;
start_int_float(N,Times) ->
    start_int_float(N/1.5,Times-1).
    
start_float_int(N,0) ->
    ok;
start_float_int(N,Times) ->
    start_float_int(N/3,Times-1).
    
start_float_float(N,0) ->
    ok;
start_float_float(N,Times) ->
    start_float_float(N/1.5,Times-1).

결과는 다음과 같습니다(Mac 시스템, 4코어 8스레드 2.5GCPU).
정수를 정수로 나누기:19ns
정수를 부동 소수점으로 나누기: 70ns
부동 소수점 정수로 나누기:19ns
부동 소수점 나누기 부동 소수점: 70ns

좋은 웹페이지 즐겨찾기