4種主流API架構風格對比

2021-01-15 優易數據

本文主要討論了四種 API 架構的風格,闡述了各自的優缺點,並介紹了每種API架構適合的情況。

兩個單獨的應用程式需要中介程序才能相互通信。因此,開發人員經常需要搭建橋梁——也就是應用程式編程接口(API),來允許一個系統訪問另一個系統的信息或功能。

為了快速、大規模地集成不同的應用程式,API 使用協議或規範來定義那些通過網絡傳輸的消息的語義和信息。這些規範構成了 API 的體系結構。

在過去,人們已經發布了多種不同的 API 架構風格。每個架構風格都有它獨有的標準化數據交換的模式。這一系列的 API 架構風格的選項,引發了大量的關於哪種架構風格才是最好的爭論。

不同時間的 API 架構風格,圖源:Rob Crowley

今天,許多 API 的使用者將 REST 稱作「消亡的 REST」(REST in peace),並且為 GraphQL 感到歡欣鼓舞。而十年前,又完全是另一幅光景:REST 是替代 SOAP 的贏家。這些觀點的問題在於,它們的出發點只是為某種技術背書,而不是去考慮它實際的屬性和特性如何與當前的需求相匹配。

四種 API 架構風格

01

RPC:調用另一個系統的函數

遠程過程調用是一種允許在不同上下文中遠程執行函數的規範。RPC 擴展了本地過程調用的概念,並將其放在 HTTP API 的上下文中。

最初的 XML-RPC 是存在問題的,因為很難確保 XML 有效負載的數據類型。因此,後來 RPC API 開始使用一個更具體的 JSON-RPC 規範,該規範被認為是 SOAP 的更簡單的替代方案。gRPC 是 Google 在 2015 年開發的最新 RPC 版本。gRPC 可插拔支持負載均衡、追蹤、運行狀況檢查和身份驗證,它非常適合連接不同的微服務。

RPC的工作機制

客戶端調用一個遠程的過程,將參數和附加信息序列化為消息,然後將消息發送到服務端。服務端在接受到消息後,將信息的內容反序列化,執行所請求的操作,然後將結果發送回客戶端。客戶端和服務端各自負責參數的序列化和反序列化。

遠程過程調用的機制,圖源:Guru99

RPC的優勢

簡單直接的交互。RPC 使用 GET 來獲取信息,使用 POST 來處理其他所有操作。服務端和客戶端之間交互的機制歸結為調用端點並獲得響應。

易於添加新函數。如果 API 有了新的需求,我們可以輕鬆地添加另一個執行這個需求的端點:1)編寫一個新函數,並將其放在一個新端點之後;2)現在,客戶可以訪問這個端點,並獲取符合其需求的信息。

高性能。輕量級的有效負載不會對網絡產生壓力,以此提供高性能,這對於共享伺服器和在工作站網絡上執行並行計算非常重要。RPC 還能夠優化網絡層,使得不同服務之間每天發送海量消息變得非常高效。

RPC的不足

和底層系統緊密耦合。API 的抽象級別有助於其可重用性。API 與基礎系統的耦合越緊密,對其他系統的可重用性就越差。RPC 與基礎系統的緊密耦合不允許其在系統函數和外部 API 之間建立抽象層。這很容易引起安全問題,因為關於基礎系統的細節實現很容易會洩漏到 API 中。

RPC 的緊密耦合使得可伸縮性要求和鬆散耦合的團隊難以實現。因此,客戶端要麼會擔心調用特定端點的帶來的任何可能的副作用,要麼需要嘗試弄清楚要調用的端點,因為客戶端不了解伺服器如何命名其函數。

可發現性低。在 RPC 中,無法對 API 進行檢驗總結,或者發送請求來開始理解根據需求應該調用哪個函數。

函數爆炸性增長。創建新函數非常容易。因此,相較於重新編輯現有的函數,我們會傾向於創建新的功能,最終產生大量難以理解的、功能重疊的函數。

RPC的用例

RPC 模式在八十年代開始使用,但這並不意味著它已經過時了。諸如 Google、Facebook(Apache Thrift)和 Twitch(Twirp)這樣的大公司如今正在內部使用高性能的 RPC 版本,來執行極高性能、低開銷的消息傳遞。它們龐大的微服務系統要求內部通信在使用短消息的情況下也保持清晰。

命令 API。RPC 是用於將命令發送到遠程系統的正確選擇。例如,Slack API 是非常以命令為中心的:加入頻道、離開頻道、發送消息。因此,Slack API 的設計者以類似於 RPC 的樣式對其進行了建模,使其小巧、緊湊並且易於使用。

用於內部微服務的客戶特定的 API。由於是在單個提供者和單個使用者之間建立直接的集成,我們不想像 REST API 那樣,花太多時間通過網絡傳輸大量的元數據。憑藉高消息速率和消息性能,gRPC 和 Twirp 成為了用於微服務的可靠用例。通過在底層使用 HTTP 2,gRPC 能優化網絡層,使其非常高效地在不同服務之間每天傳送大量信息。然而,如果你並不是要著眼於提高網絡性能,而是要在發布高度獨立的微服務團隊之間建立一個穩定的 API 聯繫。REST 就能做到。

02

SOAP:使數據作為服務可用

SOAP 是一個 XML 格式的、高度標準化的網絡通訊協議。在 XML-RPC 發布的一年後,SOAP 由微軟發布、並繼承了許多 XML-RPC 的特性。在 REST 緊隨其後發布,一開始它們是被同時使用,但很快 REST 贏得了這次比賽,成為了更流行的協議。

SOAP 的工作機制

XML 數據格式拖累了很多數據規範。伴隨著大量的消息結構,XML 數據格式使得 SOAP 成為了最冗長的 API 架構風格。

SOAP 的消息由這些部件組成:

一個信封標籤:用於開始和結束每條消息包含請求或響應的正文一個標頭:用於表示消息是否由某些規範或額外要求的來確認故障通知:包含了可能在請求處理過程能夠發生的任何錯誤

一個 SOAP 消息的例子,圖源:IBM

SOAP API 的邏輯由 Web 服務描述語言(WSDL)編寫。該 API 描述語言定義了端點並描述了可以執行的所有過程。這使得不同的程式語言和 IDE 能夠快速建立通信。

SOAP 支持有狀態和無狀態消息傳遞。在有狀態的情況下,伺服器存儲接收到的信息可能非常繁瑣複雜。但這對於涉及多方和複雜交易的操作是合理的。

SOAP 的優勢

獨立於語言和平臺。內置創建 Web 服務的功能使得 SOAP 能夠處理消息通信的同時發送獨立於語言和平臺響應。

綁定到各種協議。SOAP 在適用於多種場景的傳輸協議方面是十分靈活的。

內置錯誤處理。SOAP API 規範允許返回帶有錯誤碼及其說明的的 XML 重試消息。

一系列的安全拓展。SOAP 與 ES-Security 集成,因此 SOAP 可滿足企業級事務要求。它在事務內部提供了隱私和完整性,同時允許在消息級別進行加密。

SOAP 消息級別的安全性:在標頭元素的認證數據以及加密的正文

SOAP 的不足

如今,由於如下幾種原因,許多開發人員在聽到必須集成 SOAP API 的想法後都會感到不安。

僅使用 XML。SOAP 消息包含大量的元數據,並且在請求和響應時僅支持繁冗的 XML 格式。

重量級。由於 XML 文件的大小,SOAP 服務需要很大的帶寬。

非常專業化的知識。構建 SOAP API 伺服器需要對所有涉及到的協議以及它們及其嚴格的限制都有很深的了解。

乏味的消息更新。由於需要額外的工作來添加或者刪除某個消息屬性,這種死板的 SOAP 模式減慢了其被採用的速度。

SOAP 的用例

目前,SOAP 體系結構最常用於企業內部或與其信任的合作夥伴的內部集成。

高度安全的數據傳輸。SOAP 嚴格的消息結構,安全性和授權功能使其成為在 API 和客戶端之間執行正式軟體協議的最合適的選擇,同時又符合 API 提供者與 API 使用者之間的法律合同。這就是為什麼金融組織和其他企業用戶選擇使用 SOAP 的原因。

03

REST:使數據作為資源可用

REST 如今是一種無需解釋的 API 架構風格,它由一系列的架構約束所定義,旨在被廣泛 API 使用者採用。

當前最常見的 API 架構風格最初由 Roy Fielding 在其博士論文中提出的。REST 使得服務端的數據可用,並以簡單的格式(通常是 JSON 和 XML)來表示它。

REST 的工作機制

REST 的定義並不像 SOAP 那樣嚴格。RESTful 體系結構應該遵守如下六個體系結構約束:

統一接口:無論設備或應用程式類型如何,都可以採用統一的方式與給定的服務端進行交互。無狀態:請求本身包含處理該請求所需要的狀態,並且服務端不存儲與會話相關的任何內容。緩存客戶端 - 伺服器體系結構:允許雙方獨立發展應用程式的層級系統服務端向客戶端提供可執行代碼的能力

實際上,某些服務僅在某種程度上是 RESTful 的。而它們的內核採用了 RPC 樣式,將較大的服務分解為資源,並有效地使用 HTTP 基礎結構。但 REST 的關鍵部分是超媒體(又稱 HATEOAS),是超文本作為應用程式狀態引擎(Hypertext As The Enginer Of Application State)的縮寫。基本來說,這意味著 REST API 在每個響應中都提供元數據,該元數據連結了有關如何使用該 API 的所有相關信息。這樣便可以使客戶端和服務端解耦。因此,API 提供者和 API 使用者都可以獨立發展,而這並不會阻礙他們的交流。

理查森成熟度模型作為實現真正完整且有用的 API 架構的目標。圖源:Kristopher Sandoval

「HATEOAS 才是 REST 的關鍵功能,因為它真正使得 REST 成為 REST。但由於大多數人不使用 HATEOAS,因此他們實際上是在使用 HTTP RPC。」這是 Reddit 上表達的一些激進觀點。確實,HATEOAS 是 REST 的最成熟版本。

但是,這非常難以實現,因為這要求 API 客戶端要比它們如今構建和使用的方式變得更先進和智能得多。因此,即便是如今非常好的 REST API 也不一定總是能做到這一點。這就是為什麼 HATEOAS 主要是作為 RESTful API 設計的長期開發的願景而存在。

當服務端實現 REST 的某些功能和 RPC 的某些功能時,在 REST 和 RPC 之間確實可能存在這樣一個灰色區域。但 REST 是基於資源或名詞的,而不是基於動作或動詞。

以動詞為中心的 RPC 模型和以名詞為中心的 REST 模型中的操作對比

在 REST 中,使用例如 GET、POST、PUT、DELETE、OPTIONS 可能還有 PATCH 等 HTTP 方法來完成操作。

圖源:Thomas David

REST 的優勢

客戶端和服務端的解耦:由於 REST 儘可能地解耦了客戶端和服務端,REST 相較於 RPC 可以提供更好的抽象性。具有抽象級別的系統能夠封裝其實現細節,以更好的標示和維持它的屬性。這使得 REST API 足夠靈活,可以隨著時間的推移而發展,同時保持穩定的系統。

可發現性:客戶端和服務端之間的通信描述了所有內容,因此不需要外部文檔即可了解如何與 REST API 進行交互。

緩存友好:REST 重用了許多 HTTP 工具,也是唯一一種可以在 HTTP 層面上緩存數據的 API 架構風格。與其相對的是,在任何其他 API 上實現緩存都需要配置其他緩存模塊。

多種格式支持:REST 擁有支持多種格式用於存儲和交換數據的能力,這是它如今成為搭建公共 API 的主要選擇的原因之一。

REST 的不足

沒有標準的 REST 結構:在構建 REST API 方面,沒有具體的正確方法。如何對資源進行建模以及哪些資源需要建模取決於不同的情況。這使得 REST 在理論上很簡單,但在實踐中卻很困難。

龐大的負載:REST 會返回大量豐富的元數據,以便客戶端可以僅從響應中了解有關應用程式狀態的所有必要信息。對於具有大量帶寬容量的大型網絡系統來說,這種「囉嗦」的通信並不算很大的負載。但帶寬容量並非總是足夠的。這也是 Facebook 在 2012 年提出 GraphQL 架構風格的關鍵驅動因素。

響應過度和響應不足問題。REST 的響應包含的數據會過多或不足,通常會導致客戶端需要發送另一個請求。

REST 的用例

管理 API。在系統中,專注於管理對象並面向許多使用者的 API 是最常見的 API 類型。REST 幫助此類 API 具有強大的可發現性,良好的文檔編制,因此 REST 非常適合此對象模型。

簡單的資源驅動型應用程式。在用於連接不需要查詢靈活性的資源驅動型應用時,REST 是一種非常有效的方法。

04

GraphQL:僅請求所需要的數據

REST API 需要被多次調用才能返回所需要的資源。所以,GraphQL 被發明了,並改變了這一切遊戲的規則。

GraphQL 是一種語法,它描述了如何進行精確的數據請求。有些應用程式的數據模型具有許多相互引用的複雜實體,在這種情況下,實現 GraphQL 是值得的。

如何從 GraphQL 端點僅獲取所需要的數據,圖源:Mohit Tikoo

如今,GraphQL 的生態系統正在蓬勃發展,出現了例如 Apollo、GraphiQL 和 GraphQL Explorer 等強大的庫和工具。

GraphQL 的工作機制

GraphQL 從構建模式(Schema)開始。模式是對於用戶可以在 GraphQL API 中進行的所有查詢及其返回的所有類型的描述。模式構建非常困難,因為它需要使用模式定義語言(SDL)進行強類型化。

因為在客戶端進行查詢之前已經定義好了模式,所以客戶端可以驗證其查詢語句,以確保服務端能夠對查詢語句進行響應。在查詢語句到達後端應用程式時,GraphQL 操作將根據整個模式進行解釋,並向前端應用程式返回解析到的數據。API 向服務端發送一個龐大的查詢,該 API 返回一個僅包含我們所需數據的 JSON 響應。

GraphQL 的查詢語句執行,圖源:Jonas Helfer

除了包含 RESTful 的 CRUD 操作,GraphQL 還有訂閱(subscriptions)機制,允許接收來自服務端的實時通知。

GraphQL 的優勢

具有類型的模式:GraphQL 提前公開了它能做什麼,從而提高了其可發現性。通過將客戶端指向 GraphQL API,我們可以發現什麼查詢語句是可用的。

沒有版本控制:版本控制的最佳實踐是不要對 API 進行版本控制。

儘管 REST 提供了不同的 API 版本,GraphQL 使用的是不斷更新的單一版本,這使用戶可以持續訪問新功能,並有助於提供更整潔、更可維護的伺服器代碼。

詳細的錯誤消息:GraphQL 以類似於 SOAP 的方式提供所發生錯誤的詳細信息。它的錯誤消息包括所有解析器,並指向確切的發生故障時的查詢部分。

靈活的權限:GraphQL 允許選擇性地公開某些功能,同時保留私人信息。而相對應的是,REST 體系架構不能僅顯示部分數據,要麼是全部數據,要麼是沒有數據。

GraphQL 的不足

性能問題。GraphQL 權衡了複雜性,來實現其強大功能。一個請求中的嵌套欄位太多會導致系統過載。因此,對於複雜的查詢,REST 仍然是更好的選擇。

緩存複雜度。由於 GraphQL 不再使用 HTTP 緩存語義,因此使用者需要額外自定義緩存。

大量的預開發教育。由於沒有足夠的時間來了解 GraphQL 的某個操作和 SDL,因此許多項目決定採用眾所周知的 REST 方法。

GraphQL 的用例

移動 API。在這種情況下,網絡性能和單個消息有效負載優化很重要。因此,GraphQL 為行動裝置提供了更有效的數據加載方式。

複雜的系統和微服務。GraphQL 能夠隱藏其 API 背後的多個系統集成的複雜性。GraphQL 從多個地方聚合數據,並將它們合併為一個全局的模式。對於隨時間推移而逐漸擴展的遺留基礎架構或第三方 API 來說,這尤其重要。

05

哪種 API 模式最適用你的用例?

每個 API 項目都有不同的限制和需求。通常,API 架構的選擇取決於:

所使用的程式語言,你的開發環境,以及你的資源預算,包括人力資源和財務資源。

在了解了每種設計風格的利與弊之後,API 設計人員可以選擇最適合項目的那一種。

具有強耦合性的 RPC 很適用於內部微服務,但它對外部 API 或者 API 服務而言不是一個好的選擇。

SOAP 的使用有些麻煩,但它強大的安全拓展使它在計費操作、預訂系統和支付方面是無可替代的。

REST 是針對 API 的最高級別的抽象和最佳模型。但它往往會有些「囉嗦」而增加系統的負擔 —— 如果你使用的是行動裝置,這是個問題。

GraphQL 在數據獲取方面向前邁出了一大步,但並不是每個人都有足夠的時間和精力來掌握它。

歸根結底,去針對一些小型的用例來嘗試某種特定 API 架構,並去了解它是否適合你的用例以及是否解決了你的問題,這樣做是比較合適的。如果它適用於你的用例,就可以嘗試擴展並查看它是否適用於更多的用例。

原文連結:https://levelup.gitconnected.com/comparing-api-architectural-styles-soap-vs-rest-vs-graphql-vs-rpc-84a3720adefa

來源:架構頭條(轉載請註明出處)

—END—

因平臺規則更改,大家有時會與推送擦肩而過。

相關焦點

  • 4種主流的API架構風格對比
    作者 | AltexSoft  譯者 | 朱琪珊  策劃 | 萬佳  本文討論了四種主要的 API 架構風格,比較它們的優缺點,並重點介紹每種情況下最適合的 API 架構風格  在過去,人們已經發布了多種不同的 API 架構風格。每個架構風格都有它獨有的標準化數據交換的模式。這一系列的 API 架構風格的選項,引發了大量的關於哪種架構風格才是最好的爭論。
  • 理解RESTful API 架構設計規範與實踐
    摘要本文介紹了 REST 的由來,對 REST 的風格架構設計指導原則做了詳細的說明。同時舉例了過往開發中若干細節的考慮和實現方案。文字略長,預計需要10 ~ 20 分鐘讀完。也可以收藏起來,在需要的時候查閱。RESTful 架構是目前流行的一種網際網路應用架構。
  • RESTful風格/RESTful Api/RESTful 架構?
    尊敬的讀者,記得加關注、點讚喲,您的認可是我最大的動力,謝謝RESTful是一種軟體架構風格、設計風格,不是標準,它只是提供了一組設計原則和約束條件。下面來了解一下RESTful風格是什麼?RESTful風格URI=資源資源,當前登錄用戶的信息,用戶購物車信息,訂單,這些都是資源,資源之間需要一個唯一標識來區分,Web中通常用URI(Uniform Resource Identifier)來作為這個唯一標識。
  • Baidu與Google地圖API初探
    前天周六,有個好友過來玩,他說想在他的網站中加入地圖導航模塊,但不知道選擇哪個第三方Map API 在網上查了下Baidu、Google、QQ和MapBar等4種Map API(都是採用JS開放API),也查看了它們的SDK開發文檔,
  • 如何設計restful風格接口
    restful風格接口URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。識別(identify)、 表示(represent) 、交互(interact with)。看Url就知道要什麼看http method就知道幹什麼看http status code就知道結果如何1.
  • 2008年8款主流LGA775架構散熱器橫向評測
    雖然,今年Intel公布了最新的Core i7處理器,不過時下最主流的依然是採用LGA775架構的處理器,為幫助大家選購到一款適合自己的散熱器,我們從市面上挑選了8款主流產品進行全面測試及對比,希望可以給大家帶來參考依據。下面我們就市面上這8款LGA775架構散熱器進行了詳細的產品介紹和性能測試對比。文章內容導航:
  • 對比解讀五種主流大數據架構的數據分析能力 - 大數據_CIO時代網...
    之所以叫傳統大數據架構,是因為其定位是為了解決傳統BI的問題。  Lambda架構算是大數據系統裡面舉足輕重的架構,大多數架構基本都是Lambda架構或者基於其變種的架構。  Lambda的數據通道分為兩條分支:實時流和離線。
  • 當今四大主流的晶片架構有哪些特點?
    CPU的核心是各種類型的晶片,晶片架構是造芯的第一步。目前市場上主流的晶片架構有X86、ARM、RiSC-V和MIPS四種。四大主流晶片架構的特點X86是微處理器執行的計算機語言指令集,指一個隨著CPU技術的不斷發展,Intel陸續研製出更新型的i80386、i80486直到今天的Pentium 4系列,但為了保證電腦能繼續運行以往開發的各類應用程式以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集。ARM架構是一個32位精簡指令集處理器架構,其廣泛地使用在許多嵌入式系統設計。
  • 架構師該如何為應用選擇合適的API
    遠程對象的發現,創建和銷毀都會帶來問題整個CORAB的架構比較複雜,看看它的架構圖就知道了總之,今天你要開發一個引用,除非要個已有系統交互,你應該不會選擇CORBA。2.XML-RPC / SOAPXML-RPC發表於1998年,由UserLand Software(UserLand Software)的Dave Winer及Microsoft共同發表。
  • 詳解API網關核心功能和API管理擴展
    本文將詳細講解API網關的基礎概念,使用場景和核心功能,以及基於API網關核心引擎做的API全生命周期管理功能擴展等,最後介紹當前主流的開源API網關引擎。API網關概述在微服務架構體系裡面,我們一般會使用到微服務網關或叫API網關。
  • RESTful API簡述
    概述寫出一個好的API接口不是一件簡單的事情,那麼如何寫出一個好的API接口就是一個比較棘手的問題,目前RESTFUL是最流行的API接口設計規範REST是Roy Thomas Fielding博士於2000年提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程序在網絡中互相傳遞信息,從其誕生之日開始,它就因其可擴展性和簡單性受到越來越多的架構師和開發者們的青睞
  • 正在閱讀:主流顯卡顏色有差別?A/N顯卡色彩對比第二季主流顯卡顏色...
    但考慮到現實生活中高端產品並非人人都能接受,加上網友的提議,這次我們選擇了主流級顯卡HD7750和GTX650顯卡再次測試色彩對比。  首先這兩款顯卡在性能上和價格上定位都相當接近,同樣使用了28納米工藝,最新的架構。另外,顯卡輸出方面,我們使用VGA接口。
  • 小眾風格/亞文化產品設計研究:它們會是未來主流風格嗎?
    消費者的需求變化總是逐步由一小部分人影響到整體,當整體接受一種風格時,一種或多種新的小眾設計風格又開始破土而出,周而復始,生生不息。2. 亞文化和小眾風格是未來主流風格隨著網際網路的去中心化信息傳遞,未來是小眾風格的世界,審美會更加多樣化,在此基礎上我們研究目前已有的亞文化以及其對應的審美風格及其特點,保持對亞文化的關注,為下一次審美變革做好準備。
  • tp5.1的RestApi風格接口
    最近在一個thinkphp的項目,想著目前一直很流行的restful接口風格的api接口,就嘗試用tp5.1的restful接口風格寫了一套demo示例,並包括版本控制的接口示例,demo項目可以通過gitee或github下載。
  • 4款主流音樂APP盲聽對比
    14款主流音樂APP盲聽對比     [中關村在線音頻頻道原創] 在智慧型手機還未普及之前,數位音樂播放器(MP3)是80和90後們最常用的聽歌設備。而如今,手機已經基本取代了前者。
  • 資源 從人臉識別到機器翻譯:52個有用的機器學習和預測API
    該 API 支持 8 種語言。連結:https://www.bitext.com/text-analysis-api-2/#How-accurate-is-the-analysis2.Diffbot Analyze:提供了能用來對任何網頁進行識別、分析和主要內容和章節提取的開發者工具。
  • 從微前端到微後端,不可思議的前端架構思考
    微前端是一種類似於微服務的架構,它將微服務的理念應用於瀏覽器端,即將 Web 應用由單一的單體應用轉變為多個小型前端應用聚合為一的應用。各個前端應用還可以獨立運行、獨立開發、獨立部署。之前和前端框架架構的同學也聊了一下,一直思考的是,微前端目前如何落地,能解決什麼問題,似乎目前這個場景更多的是解決歷史系統的遷移問題,在新系統上,前端,特別是在一個統一的體系中,很少會出現跨多語言,多架構的場景。更多的是直接重構掉,做一個新的。既然前端能微前端,後端能不能微呢?
  • CVPR精彩論文解讀:對當下主流CNN物體檢測器的對比評測
    如何選擇物體檢測器——對當下主流CNN物體檢測器的評測自2014年RCNN被提出以來,基於卷積神經網絡的物體檢測已經成為主流。而由於各種不同方法在實驗時所使用的特徵提取網絡、圖像解析度、軟硬體架構等諸多因素不盡相同,目前對於不同的檢測方法一直缺乏一個實際的公平比較。這篇論文主要討論多種物體檢測算法在速度、精度做不同權衡時的表現,進而指導實際應用中對物體檢測器的選擇。
  • 安培、圖靈、RNDA比一比:三大架構顯卡能耗比對比測試
    8nm製程工藝,在官方的宣傳中,英偉達測試表明,在《控制》這款遊戲中,在60 FPS時基於圖靈架構的GPU所消耗的功耗是安培架構GPU的1.9倍,即安培架構顯卡在這裡表現出相對於圖靈顯卡1.9倍的能耗比提升。