การล็อกอินใน JSON Effect ต่อประสิทธิภาพ


22

ฉันเห็นบทความเกี่ยวกับการเข้าสู่ระบบ JSON มากขึ้น คุณสามารถค้นหาได้จากบล็อกของ NodeJS ทำไมทุกคนชอบมันมาก ฉันเห็นการดำเนินการเพิ่มเติมที่เกี่ยวข้องเท่านั้น:

  • วัตถุใหม่สองสามชิ้นที่ถูกสร้างขึ้น
  • วัตถุ Stringifying ซึ่งเกี่ยวข้องกับการคำนวณความยาวสตริงหรือการจัดสรรสตริงหลายรายการ
  • GCing อึทั้งหมดที่ถูกสร้างขึ้น

มีการทดสอบประสิทธิภาพเมื่อใช้การบันทึก JSON และการบันทึกสตริงปกติหรือไม่ ผู้คนใช้ JSON (เพื่อเข้าสู่ระบบ) ในโครงการขององค์กรหรือไม่

คำตอบ:


36

JSON เข้าสู่ระบบช่วยให้คุณสามารถที่จะแยกแฟ้มบันทึกโปรแกรมแม้ว่ารูปแบบมีการเปลี่ยนแปลงในเวลา

ตัวอย่างที่ดีคือบันทึก Apache โดยค่าเริ่มต้น Apache ใช้commonรูปแบบสำหรับ access.log:

"%h %l %u %t \"%r\" %>s %b"

สมมติว่าคุณได้สร้างตัวแยกวิเคราะห์ออฟไลน์ที่ใช้หนึ่งในล็อกไฟล์เหล่านั้นและคำนวณสถิติบางอย่างจากมัน

ในขณะที่คุณแนะนำโดเมนย่อยให้กับแอปพลิเคชันของคุณและรวมvirtual_hostถึงบันทึกของคุณ (เพื่อให้คุณสามารถแก้ไขข้อบกพร่องหากปัญหาปรากฏขึ้นพร้อมกับหนึ่งในโดเมนย่อย):

"%v %h %l %u %t \"%r\" %>s %b"

โปรแกรมแยกวิเคราะห์ของคุณไม่ได้ใช้ประโยชน์virtual_hostsแต่คุณยังต้องปรับโปรแกรมแยกวิเคราะห์เป็น:

  • ยอมรับรูปแบบบันทึกใหม่ (สังเกต%vที่ส่วนหัวของรูปแบบบันทึก)
  • ยังรองรับรูปแบบบันทึกเก่า (สำหรับไฟล์บันทึกเก่า)

แต่ถ้าคุณเข้าสู่ระบบJSON โปรแกรมแยกวิเคราะห์ของคุณจะไม่สังเกตเห็นฟิลด์เพิ่มและสามารถแยกวิเคราะห์บันทึกใหม่และบันทึกเก่าได้อย่างมีความสุข และบางตัวแยกวิเคราะห์อื่น ๆ สามารถทำให้การใช้งานของเขตข้อมูลเพิ่ม ถ้าพวกเขามีอยู่

และแน่นอนสำหรับคุณการแยกวิเคราะห์ JSON นั้นง่ายกว่าการเขียนregexpsไปที่การแยกวิเคราะห์บันทึกสตริง


10
ตัวอย่างที่สมบูรณ์แบบ
Florian Margaine

27

หากเครื่องของคุณทำงานใกล้เคียงกับขีด จำกัด ที่ว่าปัญหาดังกล่าวจะเกิดขึ้นจริงคุณน่าจะมีปัญหาที่รุนแรงมากขึ้น ในขณะที่อาจมีสถานการณ์พิเศษที่ทำให้เกิดความแตกต่างบางอย่างแอปพลิเคชั่นจำนวนมาก (อาจเป็นส่วนใหญ่) ทำงานบนเครื่องที่ความแตกต่างถ้าคุณบันทึก JSON, ข้อความหรือเรคคอร์ดง่ายๆไปยังฐานข้อมูลไม่สำคัญเลย วัตถุสตริงและการแปลงอื่น ๆ จะต้องทำในกรณีส่วนใหญ่ต่อไป (เว้นแต่ว่าคุณเข้าสู่ระบบไบนารีดิบ?) บางทีคุณอาจไม่เห็นเพราะคุณใช้คลาสเริ่มต้นที่จัดการมันในพื้นหลัง (เช่นถ้าคุณเขียนไปยังฐานข้อมูล)

หากคุณต้องการประเมินผลการปฏิบัติงานคุณจะต้องทำการทดสอบด้วยตนเองในเครื่องที่คุณต้องการรันโค้ดและสภาพแวดล้อมการเขียนโปรแกรมที่คุณใช้ทุกวัน หากมีค่าใช้จ่ายขนาดใหญ่หรือใด ๆ ขึ้นอยู่กับหลายสิ่งหลายอย่าง หากคุณเขียนเว็บไซต์ใน Ruby on Rails ข้อมูลของคุณในกรณีส่วนใหญ่จะเป็นแฮชการแปลงเป็น JSON นั้นทำให้คุณเสียค่าใช้จ่ายเกือบจะเป็นค่าใช้จ่ายเนื่องจากการแสดงภายในไม่ได้ไกลจากสิ่งที่คุณต้องการเขียน สำหรับรหัส Rails เพื่อโยนวัตถุและโครงสร้างข้อมูลดังกล่าวตลอดเวลา)

ข้อดีขึ้นอยู่กับเครื่องมือของคุณอีกครั้ง หากคุณมี JSON อยู่ในไลบรารีของคุณคุณสามารถอ่านได้ง่ายและแสดงสิ่งนี้ในบางรูปแบบ อีกครั้งเป็นตัวอย่าง: สมมติว่าคุณมีส่วนต่อประสานผู้ดูแลระบบสำหรับเว็บไซต์ของคุณและต้องการแสดงข้อมูลการบันทึกบางอย่างที่เก็บใน JSON คุณสามารถอ่านและแสดงเป็น HTML ใน Ruby ในรหัสบรรทัดเดียวในบางกรณี


1
ฉันพนันได้เลยว่าคุณไม่สนใจมากที่จะทิ้ง microseconds ...
Rhymoid

@Rymymoid ไม่ฉันชอบใช้เวลาในการแก้ปัญหาจริง
thorsten müller

3
@ Rhymoid มีสถานการณ์ที่การทิ้ง microseconds ไม่ดีแน่นอน ฉันยังคิดว่า 99.9% ของโปรแกรมเมอร์จะเขียนโค้ดในที่ที่มันไม่ได้ ตัวอย่างเช่นเว็บเฟรมเวิร์กส่วนใหญ่ทำมากกว่าที่ฉันต้องการและมันมีค่าใช้จ่าย แต่ด้วยชุดทดสอบและความปลอดภัยเต็มรูปแบบรวมถึงช่วยประหยัดหลายร้อยชั่วโมงในการเขียนโปรแกรมด้วยตัวเอง สำหรับค่าใช้จ่ายเพิ่มเติมที่ บริษัท ของฉันไม่ได้ใช้สร้างมันขึ้นมาใหม่พวกเขาสามารถให้เงินทุนกับฮาร์ดแวร์เป็นสองเท่าหากพวกเขาต้องการ (แม้ว่ามันอาจเร็วกว่าทุกอย่างที่ฉันสามารถสร้างเองได้) ในที่สุด microseconds
corsiKa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.