2015-07-13 2 views
1

Est-ce qu'Erlang est une bonne option pour le traitement de fichiers de différents types? Par exemple - lire le pdf, le document Word, la feuille Excel et les transformer? Je sais que nous pouvons utiliser Apache POI/Tika qui sont basés sur Java et ensuite intégrer en utilisant JErlang. Je ne suis pas très familier avec la syntaxe bit d'Erlang, mais je voulais vérifier si Erlang est adapté à ce type d'application sans utiliser le POI Apache?Traitement de fichiers dans Erlang

Répondre

2

Erlang a un grand binary support ce qui en fait un excellent langage pour l'analyse de différents types de binaires.

dire à decode a tcp segment by using binary syntax in erlang vous pouvez faire quelque chose comme

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. 

qui par rapport aux autres langues est un moyen super facile à utiliser la correspondance de motif et support binaire binaires Décode/encode. Néanmoins, Erlang est plus sur le traitement simultané et le passage de messages entre ces processus, donc je ne l'utiliserais pas pour transformer/analyser les binaires, j'utiliserais plutôt Erlang pour gérer le serveur web/API et pour gérer tous les concurrents connexions, et je déléguerais le travail de transformer les documents en c/C++ brut pour la performance, plus sur c/C++ ou sur Java, vous avez des bibliothèques plus riches pour travailler avec pdf/Excel/mot documents

+0

Merci. La délégation d'Erlang à C++ ne va-t-elle pas affecter les performances? Nous n'avons peut-être pas de SLA milliseconde donc je pensais si nous pouvions faire tout à Erlang? – Chirota

+0

A ce stade, vous devriez vraiment faire des benchmarks pour décider si vous voulez aller en C/C++ ou Erlang, dans mon expérience de transformation de documents binaires a de meilleures performances quand c/C++ que erlang/beam, vous pouvez construire des ports erlang: http://www.erlang.org/doc/tutorial/c_port.html et vous pouvez aussi implémenter des sockets unix pour appeler c/C++ depuis erlang ce qui est aussi très rapide, le vrai problème n'est pas sur la communication d'Erlang à c/C++ mais sur le temps/cpu requis par erlang pour analyser des millions de documents binaires. – rorra