服務呼叫效率比較

2022-02-20 11:28:53 字數 1840 閱讀 2817

在一些較大規模的軟體專案上,如果對使用者體驗要求較高,那就有必要對服務呼叫效率作個比較。

關於服務呼叫,無外乎有兩種:本地呼叫(專案內)和遠端呼叫(專案間)。

本地呼叫,在其他因素相同的情況下,由於不需要對外通訊,其效率肯定最高。但問題是,隨著業務的發展,當一台伺服器無法滿足時,我們必須遠端呼叫。

遠端通訊可能有很多,現比較一下,local,rabbitmq rpc ,webapi的效率。

環境是:本地電腦,滿足硬體環境一致的要求;

分別啟動 rabbitmq,webapi,使用同一演算法,以保證所有的業務邏輯一致。為了最大限度的提高webapi的效率,不使用任何第三方框架。

如: 只實現servlet介面

@override

public void service(servletrequest servletrequest, servletresponse servletresponse) throws servletexception, ioexception catch (exception ex)

servletresponse.setcontenttype("text/html");

servletresponse.setcharacterencoding("utf-8");

printwriter writer = servletresponse.getwriter();

writer.println(fibval);

writer.flush();

writer.close();}。

請求端如下:

public static void main(string args) throws exception 

計算fib(41)的值,測試結果如下:

第二次執行:

第三次:

local , 在1000ms 左右;

rabbitmq rpc ,在 1200ms 左右;

webapi,在 2000ms 左右。

由此來看,在遠端呼叫中,rabbitmq rpc的效率要比webapi高很多。

但有一點限制,rabbitmq rpc 只能用於同一網段,不過對於跨網段的還是可以解決的。

遞迴呼叫效率問題,遞迴與迴圈比較

1.所謂的遞迴慢到底是什麼原因呢?大家都知道遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做位址儲存,引數傳遞等,這是通過乙個遞迴工作棧實現的。具體是每次呼叫函式本身要儲存的內容包括 區域性變數 形參 呼叫函式位址 返回值。那麼,如果遞迴呼叫n次,就要分配n 區域性變數 n 形參 n 呼...

演算法效率比較

題目 針對陣列a和陣列b,兩個陣列的元素內容相同,不過陣列a是已經排序的,陣列b是亂序的,針對陣列的中位數,存在以下兩組程式,比較其效率並分析原因。int g int main for int i 0 i n i 背景知識 當包含流水線技術的處理器處理分支指令時就會遇到乙個問題,根據判定條件的真 假...

vector list 效率比較

1 比較 1 intmain 14 finish clock 15 cout vector push back 時間為 finish start 毫秒 16 insert time 17 vector iterator pos vec vecint.begin 18 pos vec 19 vecin...