Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Joe Watkins:
Expanding Horizons
Nov 03, 2016 @ 09:40:49

In his most recent post Joe Watkins talks about a PHP extension he's been working on that wraps the libui library making it easier to use PHP to create cross-platform user interfaces.

Recently I have been working on a new extension. It is a wrapper around libui, which is a cross platform user interface development library, that allows the creation of native look and feel interfaces in the environments it supports.

That's a few hundred lines of PHP 7 code, moulded into an imitation of the snake game we all used to have on our phones. We've seen other user interface extensions before in PHP, there's even a modified PHP runtime that will allow you to write GTK+ applications.

I don't know anyone that ever deployed any of those extensions, and for very good reasons; PHP5 can barely do anything without allocating a bunch of memory, and doing a bunch of other extremely inefficient things, almost everything it does is inefficient. Beyond a basic forms like application, PHP5 is close to useless.

You can see an example of the snake game in action in this YouTube video. He goes on to talk about the low amounts of CPU and RAM the game (and extension) use and that, with the right amount of work, it can achieve around 60 frames per second. He points out that it is still early on in the development cycle for the extension and libui but there's already documentation for those wanting to investigate.

tagged: libui extension example video snake game efficiency

Link: http://blog.krakjoe.ninja/2016/11/expanding-horizons.html

PHPMaster.com:
Practical Code Refactoring, Part 4 - Efficiency
Nov 01, 2012 @ 11:37:54

PHPMaster.com has posted the latest in their "Practical Code Refactoring" series , this time with a focus on efficiency and how you can refactor your code to help it perform better both in processing power and in resource use.

In part three of this series we dealt with refactoring code for extensibility and discussed logical extensibility, modular design, decoupling, and encapsulation. In this final part of the series, we discuss what the main concerns of efficiency are for your web application and how to refactor for better efficiency.

They talk about some of the things you can do about network bandwidth usage, memory inefficiencies and processing issues (over you doing more work than you need to?). These aren't code examples - every application is different when it comes to this stuff, but it gives you some good questions to ask to fill in the blanks.

tagged: efficiency code refactor series processing resource usage

Link:

Brandon Savage's Blog:
Stop Sacrificing Readability For Efficiency!
Mar 27, 2009 @ 12:58:28

Brandon Savage has a recommendation fro developers out there - sometimes readability is more important than any micro-efficiency you might gain in your scripts.

Much was made last week over the topic of micro optimization in PHP. Most of these argued that micro optimization was a bad idea. [...] There’s another reason that micro optimization can be a bad choice: it makes code absolutely impossible to read!

He points out one example for validating the length of a string in two ways - one using isset to tell which characters in a string are set and the other using the tride and true call to strlen. The first, while benchmarked to give you a (very tiny) improvements, is harder to read at first glance than the check to the string length.

tagged: readability efficiency performance microoptimizations benchmark

Link:

Brandon Savage's Blog:
Hitting the Database Less: Quick and Dirty Strategies for Database Efficiency
Nov 17, 2008 @ 11:04:24

In this new post to his blog, Brandon Savage looks at a few methods you can use to help reduce the overhead connecting to the database can cause.

Below are a list of my top five quick-and-dirty strategies for improving database performance in web applications. These suggestions are culled from recent experience and mixed with some ideas that I've implemented in my own code. They're not high level, but they are something we need consistent reminders about.

Here's the short version of the list:

  • Try caching
  • Reduce the number of queries that run
  • Use indexes
  • Optimize data usage
  • Avoid functions in WHERE statements

You'll have to check out his post for the full versions, though.

tagged: strategy database efficiency tip list cache index optimize where

Link: