私はJMSシリアライザを使用しています。大きなデータを使用するとパフォーマンスが悪いことがわかりました。jmsシリアライザのパフォーマンスの問題
$serializer = $this->get('serializer');
$encodedJson = $serializer->serialize($jsonData, 'json');
$response = new Response($encodedJson);
$response->headers->set('Content-Type', 'application/json');
データは1
n
までオブジェクトのリストを指定できます
$jsonData = array(
'message' => 'this is a nice message',
'data' => array(
0 => array(
'firstname' => 'achim',
'lastname' => 'menzel'
)
)
);
これは私がデータをシリアル化する方法である:私は配列として表示され、次のオブジェクト構造をしました。データに500以上のオブジェクトがあると、パフォーマンスは非常に遅くなります(5秒以上)。 json_encode()
を直接使用すると、1秒以上かかることはありません。
JMSシリアライザの使用を改善するにはどうすればよいですか?私は、jmsシリアライザが大きなデータを処理できないとは思わない。
これは、シリアル化のために使用されるメインクラスです:
class JsonData {
public $success = false;
public $message = '';
public $data;
public $responseCode = 200;
public $contentType = 'application/json';
}
そして現在、このオブジェクトは内部$data
です:
class GuestDTO {
private $userid;
private $firstname;
private $lastname;
private $birthday;
private $picturemedium;
private $picturelarge;
private $gender;
private $modifydate;
private $entries = array();
}
そして$entries
は、このクラスからオブジェクトのリストです:
class GuestlistentryDTO extends AbstractGuestDTO{
private $guestlistentryid;
private $guestlistid;
private $arrivedat;
private $bouncername;
private $rejectionreason;
private $companioncount;
private $companioncountcheckin;
private $winner;
private $vip;
}
注釈なし必要なデータを使用するための準備が整ったからです。
のグループおよび/除外ルールの微調整ミックスから来たあなたはJMSSerializerの部分がxhprofまたはXdebugを使って全体を遅くし、cachegrind/kcachegrind/webgrindされているに検査しようとしたことがありますか?フィルタリングの値や仮想フィールドのような、JMSシリアライザを使用したシリアライゼーションに特殊な問題がありますか? – nifr
私は、jmsシリアライザがリクエストを遅くする部分であることを知りました。私はすべての設定や注釈を設定しません。なぜなら私はDTOオブジェクトを使用しています。私は必要なものを持っているため、設定をする必要はありません。 –
あなたはエンティティをすぐに提供できるので、ここでのパフォーマンスの影響についてのフィードバックをいただけますか? – nifr