1
Erlang是不同類型文件處理的好選擇嗎?例如 - 閱讀pdf,Word文檔,Excel工作表並將其轉換?我知道我們可以使用基於Java的Apache POI/Tika,然後使用JErlang進行集成。 我對Erlang的位語法不是很熟悉,但是想要檢查Erlang是否適合這種應用而不使用Apache POI?Erlang中的文件處理
Erlang是不同類型文件處理的好選擇嗎?例如 - 閱讀pdf,Word文檔,Excel工作表並將其轉換?我知道我們可以使用基於Java的Apache POI/Tika,然後使用JErlang進行集成。 我對Erlang的位語法不是很熟悉,但是想要檢查Erlang是否適合這種應用而不使用Apache POI?Erlang中的文件處理
Erlang有很棒的binary support,這使它成爲解析不同類型二進制文件的絕佳語言。
即到decode a tcp segment by using binary syntax in erlang你可以這樣做
decode(Segment) ->
case Segment of
<< SourcePort:16, DestinationPort:16,
SequenceNumber:32,
AckNumber:32,
DataOffset:4, _Reserved:4, Flags:8, WindowSize:16,
Checksum:16, UrgentPointer:16,
Payload/binary>> when DataOffset>4
->
OptSize = (DataOffset - 5)*32,
<< Options:OptSize, Message/binary >> = Payload,
<> = <>,
%% Can now process the Message according to the
%% Options (if any) and the flags CWR, ..., FIN.
binary_to_list(Message)
end.
這相對於其他語言的使用模式匹配和解碼/編碼的二進制文件二進制支持一個超級簡單的方法。不過,Erlang更多的是在這些進程之間的併發處理和消息傳遞,所以我不會使用它來轉換/解析二進制文件,而是使用Erlang來管理Web服務器/ api並處理所有併發連接,我將委託文件轉換爲原始c/C++性能的工作,再加上c/C++或java上你有更豐富的庫來處理pdf/excel/word文檔
謝謝。 Erlang不會影響性能嗎?我們可能沒有毫秒SLA,所以我想我們是否可以在Erlang中完成整個事情? – Chirota
在這一點上,你應該真的做基準來決定是否去C/C++或Erlang,根據我的經驗,當用c/C++處理二進制文檔比用erlang/beam處理時有更好的性能,你可以建立端口來使用c/C++ erlang:http://www.erlang.org/doc/tutorial/c_port.html,你也可以實現unix套接字來從erlang調用c/C++,這也是相當快的,真正的問題不在於從Erlang到c/C++,但erlang需要解析數百萬個二進制文檔所需的時間/ CPU。 – rorra