นี่คือ “การต่อสตริง” และเป็นการฝึกฝนที่ไม่ดี: … บางคนอาจบอกว่าช้า ส่วนใหญ่เป็นเพราะบางส่วนของสตริงที่ได้จะถูกคัดลอกหลายครั้ง แน่นอน ในทุกตัวดำเนินการ + คลาส String จะจัดสรรบล็อกใหม่ในหน่วยความจำและคัดลอกทุกอย่างที่มีลงในนั้น บวกคำต่อท้ายที่ต่อกัน
การต่อสตริงไม่มีประสิทธิภาพหรือไม่
การต่อ การเรียงต่อกันไม่ได้ไร้ประสิทธิภาพขนาดนั้น เนื่องจากคอมไพเลอร์สมัยใหม่เข้ามาแทนที่ด้วยการใช้งานที่มีประสิทธิภาพโดยอิงจาก StringBuilder (คุณจะเห็นมันถ้าคุณดู bytecode ของ classfile)
ทำไมการต่อสตริงถึงมีราคาแพง
มันแพงนะ มาเจาะลึกกันก่อนว่าทำไมมันถึงแพงใน Java วัตถุสตริงจะไม่เปลี่ยนรูป ซึ่งหมายความว่าเมื่อสร้างแล้ว คุณจะไม่สามารถเปลี่ยนแปลงได้ ดังนั้นเมื่อเราเชื่อมสตริงหนึ่งกับอีกสตริง สตริงใหม่จะถูกสร้างขึ้น และสตริงที่เก่ากว่าจะถูกทำเครื่องหมายสำหรับตัวเก็บขยะ
การใช้การต่อสตริงในแบบสอบถาม SQL มีอันตรายอย่างไร
1 คำตอบ
- ประสิทธิภาพ: เมื่อใช้คำสั่งที่เตรียมไว้ ไวยากรณ์การสืบค้นจะต้องแยกวิเคราะห์เพียงครั้งเดียวและต้องคำนวณเส้นทางการเข้าถึงเพียงครั้งเดียวสำหรับแต่ละประเภทการสืบค้นที่แตกต่างกัน …
- ความปลอดภัย: การใช้การต่อสตริงกับข้อมูลที่ผู้ใช้ให้มานั้นมักจะถูกโจมตีด้วยการฉีด SQL
การต่อสตริงใน Python ช้าไหม
พฤติกรรมนี้ไม่ควรทำให้คุณประหลาดใจ: ออบเจ็กต์สตริงของ Python นั้นเปลี่ยนไม่ได้ ดังนั้นการต่อกันแต่ละครั้งจะสร้างสตริงใหม่แทนที่จะแก้ไขสตริงที่มีอยู่แล้ว ไม่แปลกใจเลยที่ การต่อสตริงหลายสตริงจะถือว่าช้า.