<rss
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      version="2.0"
    >
      <channel>
        <title><![CDATA[Block of Vaz]]></title>
        <description><![CDATA[Random thought of a System Engineer]]></description>
        <link>https://blog.siamstr.com/tag/2584/</link>
        <atom:link href="https://blog.siamstr.com/tag/2584/rss/" rel="self" type="application/rss+xml"/>
        <itunes:new-feed-url>https://blog.siamstr.com/tag/2584/rss/</itunes:new-feed-url>
        <itunes:author><![CDATA[VΔz]]></itunes:author>
        <itunes:subtitle><![CDATA[Random thought of a System Engineer]]></itunes:subtitle>
        <itunes:type>episodic</itunes:type>
        <itunes:owner>
          <itunes:name><![CDATA[VΔz]]></itunes:name>
          <itunes:email><![CDATA[VΔz]]></itunes:email>
        </itunes:owner>
            
      <pubDate>Thu, 19 Dec 2024 07:27:01 GMT</pubDate>
      <lastBuildDate>Thu, 19 Dec 2024 07:27:01 GMT</lastBuildDate>
      
      <itunes:image href="https://image.nostr.build/ba269bb842d8e1c6ada4ea3f9203aa570f1610cceeaca6a35c281f28274a914a.jpg" />
      <image>
        <title><![CDATA[Block of Vaz]]></title>
        <link>https://blog.siamstr.com/tag/2584/</link>
        <url>https://image.nostr.build/ba269bb842d8e1c6ada4ea3f9203aa570f1610cceeaca6a35c281f28274a914a.jpg</url>
      </image>
      <item>
      <title><![CDATA[serde-derive มีปัญหาด้านประสิ…]]></title>
      <description><![CDATA[serde-derive มีปัญหาด้านประสิทธิภาพเนื่องจากเหตุผลหลายประการ:


โค้ดที่ซับซ้อนและซ้อนลึก: serde-derive สร้างโค้ดที่มีการเรียกใช้ฟังก์ชัน deserialize ซ้อนกันหลายชั้น ซึ่งทำให้เกิดการคัดลอกข้อมูล (memcpy) บ่อยครั้ง1.
การจัดการหน่วยความจำ: Rust และ…]]></description>
             <itunes:subtitle><![CDATA[serde-derive มีปัญหาด้านประสิทธิภาพเนื่องจากเหตุผลหลายประการ:


โค้ดที่ซับซ้อนและซ้อนลึก: serde-derive สร้างโค้ดที่มีการเรียกใช้ฟังก์ชัน deserialize ซ้อนกันหลายชั้น ซึ่งทำให้เกิดการคัดลอกข้อมูล (memcpy) บ่อยครั้ง1.
การจัดการหน่วยความจำ: Rust และ…]]></itunes:subtitle>
      <pubDate>Thu, 19 Dec 2024 07:27:01 GMT</pubDate>
      <link>https://blog.siamstr.com/post/note1qzanyqtt6ak6jsrys049fpe9smpcu4fftgyxqzk2jj8swfk6vq3s56h8r9/</link>
      <comments>https://blog.siamstr.com/post/note1qzanyqtt6ak6jsrys049fpe9smpcu4fftgyxqzk2jj8swfk6vq3s56h8r9/</comments>
      <guid isPermaLink="false">note1qzanyqtt6ak6jsrys049fpe9smpcu4fftgyxqzk2jj8swfk6vq3s56h8r9</guid>
      <category>2584</category>
      
      <noteId>note1qzanyqtt6ak6jsrys049fpe9smpcu4fftgyxqzk2jj8swfk6vq3s56h8r9</noteId>
      <npub>npub1vaz88a5zhsqsrj220vh5vdnpjsu53msm34hzvcrh27x5d7zeav7qm45t60</npub>
      <dc:creator><![CDATA[VΔz]]></dc:creator>
      <content:encoded><![CDATA[<p><code>serde-derive</code> มีปัญหาด้านประสิทธิภาพเนื่องจากเหตุผลหลายประการ:<br><br>1. <strong>โค้ดที่ซับซ้อนและซ้อนลึก</strong>: <code>serde-derive</code> สร้างโค้ดที่มีการเรียกใช้ฟังก์ชัน <code>deserialize</code> ซ้อนกันหลายชั้น ซึ่งทำให้เกิดการคัดลอกข้อมูล (memcpy) บ่อยครั้ง<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>2. <strong>การจัดการหน่วยความจำ</strong>: Rust และ LLVM ไม่เก่งในการทำ Return Value Optimization (RVO) ซึ่งทำให้การคัดลอกผลลัพธ์ของ <code>deserialize</code> กลับไปยังที่หมายปลายทางเกิดขึ้นบ่อยครั้ง<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>3. <strong>การสร้างผลลัพธ์หลายครั้ง</strong>: ในกรณีที่มีการ deserialize ข้อมูลประเภทเดียวกันหลายครั้ง มันจะสร้าง <code>Result&lt;T, _&gt;</code> แยกกันหลายครั้ง ซึ่งอาจทำให้เกิดปัญหาการใช้หน่วยความจำมากเกินไปและทำให้ stack overflow<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>4. <strong>ไม่สามารถทำงานขนานกันได้</strong>:  <code>serde-derive</code> มีการพึ่งพา chain ที่ไม่สามารถทำงานพร้อมกันได้ (sequential dependencies) ซึ่งหมายความว่าโค้ดที่สร้างขึ้นโดย serde-derive ต้องทำงานตามลำดับ ไม่สามารถทำงานหลายๆ อย่างพร้อมกันได้ (parallel execution) ทำให้เวลาในการคอมไพล์เพิ่มขึ้นและประสิทธิภาพลดลงในบางกรณี<br><br>ตัวอย่างเช่น ถ้าคุณมีหลายฟิลด์ที่ต้อง deserialize โค้ดที่สร้างขึ้นจะต้องทำการ deserialize ฟิลด์เหล่านั้นทีละฟิลด์ ไม่สามารถทำพร้อมกันได้ ซึ่งทำให้เกิดการหน่วงเวลาและใช้ทรัพยากรมากขึ้น<br><br>ดังนั้น <code>serde-derive</code> อาจไม่เหมาะสำหรับโค้ดที่ต้องการประสิทธิภาพสูง.<br><br><a href="https://github.com/serde-rs/serde/issues/2584">1</a>: <a href="https://github.com/serde-rs/serde/issues/2584">GitHub Issue <a href='/tag/2584/'>#2584</a></a><br><a href="https://github.com/serde-rs/serde/issues/2831">2</a>: <a href="https://github.com/serde-rs/serde/issues/2831">GitHub Issue <a href='/tag/2831/'>#2831</a></a><br><a href='/tag/siamstr/'>#siamstr</a> <a href='/tag/siamdev/'>#siamdev</a> <a href='/tag/rust/'>#rust</a></p>
]]></content:encoded>
      <itunes:author><![CDATA[VΔz]]></itunes:author>
      <itunes:summary><![CDATA[<p><code>serde-derive</code> มีปัญหาด้านประสิทธิภาพเนื่องจากเหตุผลหลายประการ:<br><br>1. <strong>โค้ดที่ซับซ้อนและซ้อนลึก</strong>: <code>serde-derive</code> สร้างโค้ดที่มีการเรียกใช้ฟังก์ชัน <code>deserialize</code> ซ้อนกันหลายชั้น ซึ่งทำให้เกิดการคัดลอกข้อมูล (memcpy) บ่อยครั้ง<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>2. <strong>การจัดการหน่วยความจำ</strong>: Rust และ LLVM ไม่เก่งในการทำ Return Value Optimization (RVO) ซึ่งทำให้การคัดลอกผลลัพธ์ของ <code>deserialize</code> กลับไปยังที่หมายปลายทางเกิดขึ้นบ่อยครั้ง<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>3. <strong>การสร้างผลลัพธ์หลายครั้ง</strong>: ในกรณีที่มีการ deserialize ข้อมูลประเภทเดียวกันหลายครั้ง มันจะสร้าง <code>Result&lt;T, _&gt;</code> แยกกันหลายครั้ง ซึ่งอาจทำให้เกิดปัญหาการใช้หน่วยความจำมากเกินไปและทำให้ stack overflow<a href="https://github.com/serde-rs/serde/issues/2584">1</a>.<br><br>4. <strong>ไม่สามารถทำงานขนานกันได้</strong>:  <code>serde-derive</code> มีการพึ่งพา chain ที่ไม่สามารถทำงานพร้อมกันได้ (sequential dependencies) ซึ่งหมายความว่าโค้ดที่สร้างขึ้นโดย serde-derive ต้องทำงานตามลำดับ ไม่สามารถทำงานหลายๆ อย่างพร้อมกันได้ (parallel execution) ทำให้เวลาในการคอมไพล์เพิ่มขึ้นและประสิทธิภาพลดลงในบางกรณี<br><br>ตัวอย่างเช่น ถ้าคุณมีหลายฟิลด์ที่ต้อง deserialize โค้ดที่สร้างขึ้นจะต้องทำการ deserialize ฟิลด์เหล่านั้นทีละฟิลด์ ไม่สามารถทำพร้อมกันได้ ซึ่งทำให้เกิดการหน่วงเวลาและใช้ทรัพยากรมากขึ้น<br><br>ดังนั้น <code>serde-derive</code> อาจไม่เหมาะสำหรับโค้ดที่ต้องการประสิทธิภาพสูง.<br><br><a href="https://github.com/serde-rs/serde/issues/2584">1</a>: <a href="https://github.com/serde-rs/serde/issues/2584">GitHub Issue <a href='/tag/2584/'>#2584</a></a><br><a href="https://github.com/serde-rs/serde/issues/2831">2</a>: <a href="https://github.com/serde-rs/serde/issues/2831">GitHub Issue <a href='/tag/2831/'>#2831</a></a><br><a href='/tag/siamstr/'>#siamstr</a> <a href='/tag/siamdev/'>#siamdev</a> <a href='/tag/rust/'>#rust</a></p>
]]></itunes:summary>
      
      </item>
      
      </channel>
      </rss>
    