中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中怎么提升Ruby應用的性能

發布時間:2021-07-20 15:22:45 來源:億速云 閱讀:112 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Go語言中怎么提升Ruby應用的性能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1.低成本且易用的并發

按照Go的設計,幾十個(甚至上千個)并發操作能夠輕而易舉的實現。它能夠充分利用所有CPU的優勢。

盡管使用ruby早就可以處理線程操作了,但是其處理結果遠比不上Go:Ruby使用的是綠色線程,(即只有一個CPU得到利用),這與Go的channels方式相去甚遠。

2. 低內存開銷

一個 Go 程序編譯出來也就幾 M 大小。他們能在***化“榨取”機器性能的同時高效的利用內存。在 資源密集型任務中獨立的獲取輸入并返回計算結果 這類情況中,Golang 的表現堪稱***。你能輕松的啟動的多個程序,他們只有在需要時才被喚醒,同時還能得到非常不錯的性能。

3. 易于部署

Go 程序能在數秒內被編譯成一個小的二進制文件。 無需任何依賴,他們就能被輕松部署到您的生產服務器上。稍后,我將在 Firmapi 上向您展示我們是如何將 Go 代碼部署到我們的服務器上的。

連通 Go 和 Ruby

已經有 一個 gem 被發布出來,使之成為可能。但我還是決定不用它,因為我覺得(這個 gem)讓 Go 程序作為服務端在后臺運行,然后通過 Unix 域套接字來與前端的 Ruby 程序通信有點太麻煩了,***我嘗試了一個直截了當的方法:

其實非常簡單: 讓 Go 程序返回一個 JSON 格式的數據,然后在 Ruby 程序里解析它。 這樣一來,我們就能用 Go 程序加速所有資源密集型任務了。他們將會在服務器上被編譯進二進制文件。這些 Go 程序在每次被調用之后都會返回一個 JSON 格式的數據給 Ruby 程序使用。

1.  Go 方面

我們期望Go程序能返回一個JSON,用Ruby解析標準化輸出,這有個例子。

雖然有很多復雜的好用的程序用的是自有變量,但是中心思想不會變了。

2.  Ruby 方面

Ruby 代碼則可精簡到一行 :

為了保持井井有條,Go程序會被放在自己的文件夾里。這樣部署起來容易點。然后寫一個執行對應的Go程序的類,來解析和響應JSON。在生產環境中則會用二進制包來增加執行效率。下面是一則類的可能:

用method_missing這個類,在不改變Ruby代碼的情況下,讓新的Go程序跑起來。開發者只需按照這個規則,添加新程序就可以了。

怎么組織代碼?

筆者贊成直接把Go代碼包含到你的主資源庫內。如果要添加的程序的大小和范圍所剩無幾,你可以使用源控制來多獲取一些。主要是Ruby程序和Go程序之間的版本要不一致。例子中,我把代碼保存到: my_app/go/program1/

部署

用Go構建程序,Go生成的二進制包既可以在本地環境運行,也可以在產品上運行。唯一的問題是怎樣部署這些文件:即可以上傳到云存儲上(如Amazon S3),然后在部署環境上依次下載,也可以直接上傳到部署環境。

關于Go語言中怎么提升Ruby應用的性能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秀山| 通化市| 扎兰屯市| 湾仔区| 江津市| 平果县| 惠来县| 和平县| 湖口县| 满洲里市| 桦甸市| 阿城市| 临安市| 镇安县| 神农架林区| 仙居县| 乡城县| 昌黎县| 登封市| 神木县| 汽车| 正蓝旗| 繁昌县| 鹿邑县| 遵义市| 三亚市| 伊宁市| 武强县| 旅游| 新绛县| 保德县| 岑溪市| 巴彦淖尔市| 卢氏县| 翼城县| 枣强县| 错那县| 微山县| 麻阳| 曲阜市| 政和县|