August 6, 2013

PHP - Tốc độ giữa Foreach vs For

Làm việc với PHP cũng có được vài năm kinh nghiệm, lại là một người yêu thích về mặt tốc độ khi triển khai ứng dụng web. Ngày hôm qua, sau khi đọc 1 bài viết phân tích sâu về ARRAY PHP và trong bài viết này đã cho rằng foreach chậm hơn for đã làm cho mình thật sự không tin. Benchmark không biết bao lần, dẫn chứng cho bao người xem, cuối cùng sau khi đọc hết bài viết, test thử và gật gù thừa nhận. Và phải nhìn lại rằng PHP là một ngôn ngữ tuy rất dễ chịu nhưng cũng thật huyền bí, thay đổi 1 vài thứ sẽ lật ngược ván cờ về performance. Bài viết không có ý định trình bày lại những gì tác giả kia đã viết, chỉ một chút minh họa để nhìn lại vấn đề performance thôi.

Mình đã luôn khẳng định với không ít người foreach nhanh hơn for rất nhiều lần. Không nói suông, mà dẫn chứng trực tiếp. Nhưng có 1 điều thú vị mà ngày hôm qua mình cũng được biết.
Nếu dùng cần một vòng lặp để đọc dữ liệu từ một array, thì lựa chọn là dùng foreach, nhưng nếu dùng để thay đổi giá trị các phần tử trong array thì lựa chọn lại là for.

Lý do tại sao thì quá dài dòng, nên mình không giải thích trên đây, chỉ dẫn chứng bằng hai hình ảnh minh họa như bên dưới

Lặp qua 1 array chỉ để đọc value của các elements. Foreach nhanh hơn For
Lặp qua 1 array và thay đổi value của các elements. For nhanh hơn Foreach

Nếu bạn nào có ý định đọc về cấu trúc PHP ARRAY như thế nào, và muốn biết lý do vì sao thì xin mời đến với bài viết của tác giả bên dưới:
https://sheriframadan.com/2012/10/a-closer-look-into-php-arrays/

6 comments:

  1. Cảm ơn thầy ! Hay lắm :)

    ReplyDelete
  2. Sự chênh lệch không hề nhỏ. Cảm ơn tác giả vì đã có quả thí nghiệm hay. :D

    ReplyDelete