『DynamicJson』にデカイデータを食わすとシャレにならないくらい,遅い
関連記事
- 【#apache #PHP】apacheが立ち上がらなくなったー「アクセス許可で禁じられた方法でソケットにアクセスしようとしました」エラー発生 【2024年04月16日(火)】
- 【#Laravel #PHP】久しぶりにLaravelと格闘しておるがすっかり忘れちょる(汗 【2024年04月12日(金)】
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【PHP】PHPのバージョンをアップしたら,「tcpdf」フレームワークがエラー吐きまくりで,こっちまで吐きそうになった 【2024年01月10日(水)】
さくらインターネットさま,申し訳ございませんm(__)m
サバクラ間の画像のやり取りの遅さ,御社のクラウドサーバーがトロいのかと思っておりましたが...
C#側の,JSONをパースするクラス@DynamicJsonが,遅いことが判明...(滝汗
クラウドサーバー側からは,画像データ300~400キロバイトを,BASE64にエンコードしてJSON形式で送出
C#側で,受信後,DynamicJsonクラスで,デコードして,画像データに復調させておったんじゃけど...
画像の転送に7~10秒ほどかかっておって,こんなもんかねぇ?と妙に納得して
仕方ないってことで,キャッシュシステムまで実装してみたんじゃが...
なんか,心に引っかかるものがあったんで,サーバ側@PHPに追跡コードを入れてみたら
ほぼ瞬殺でデータ送出完了していることが判明(な,なんだってぇ~~>Ω)
まさか,C#側の受信がトロいのかと思って,C#側も追跡コードを入れてみたら,受信も瞬殺(な,なんだってぇ~~>Ω)
その次のコードブロックにある.JSONパーサーまで進めていったところ...遅い...異常に遅い...
原因はDynamicJsonかっ!
DynamicJsonのパーサーアルゴリズムが,タコなのか?
でも,中身は,.NETのXML系ライブラリを直接呼んでいるだけのような感じも...(汗
さぁ~て,どう対策するかねぇ?と考えこむこと1時間...なんか,画像のサイズに合わせて,指数関数的に遅くなってなっていることに気がついて
んじゃぁ,送出する画像なBASE64文字列(400キロバイト)を,10キロバイト単位くらいに分割し配列化して,送出してみたらどげんじゃろか?
ってことで,コードを変更してみたら...
JSONパーサーも瞬殺(1秒ほど)に\(^o^)/
う~む,DynamicJsonにての巨大データのやり取りは
1.サーバー上でデータ分割し,JSON化.まとめていっぺんに送出
2.まとめて受信後,C#+DynamicJsonで,エンコード
3.分割しているデータを,ループで繋げていって,元に戻す
が,ヨサゲじゃじ
今日は金曜日…JSONの呪い
おつかれ様でございます
週末はゆっくり脳みそ休ませてあげてくださいませ(*^▽^)/♪
>>mokemoke さま
明日明後日は,ゆっくりする予定?
雨っぽいんで,お出かけもなしで
マッタリ遊びますわん