Wednesday, August 30, 2006

PEAR Cache_Lite vs the Alternative PHP Cache (APC) Wrap-up

While it does appear that the Alternative PHP Cache (APC) is faster then PEAR Cache_Lite, it is only marginally faster. After comparing a total of 3,000 unique cache write and cache reads APC was only 0.0003 seconds faster.

Since APC is not bundled with PHP and it generally requires additional installation and configuration steps it doesn't seem to be well matched for Odin Assemble.

We'd love to hear any insights you may have from personal expierence with APC. Let us know your thoughts!

PEAR Cache_Lite vs the Alternative PHP Cache (APC) Result Table



1 2 3 4 5
PCL Read: 0.5118411300 0.5102628500 0.5147700500 0.5012261300 0.4773143600
PCL Write: 0.5111108700 0.5095709800 0.5140931700 0.5027453900 0.4762868400
APC Read: 0.5121711900 0.5103664100 0.5148693000 0.4986618800 0.4776502900
APC Write: 0.5113126400 0.5097728000 0.5142979700 0.5002530600 0.4765448900






Difference 0.0005318300 0.0003053800 0.0003040500 0.0050565800 0.0005939800
Winner APC APC APC PCL APC


6 7 8 9 10
PCL Read: 0.5068983600 0.4675680900 0.6671242200 0.5249346200 0.4250428500
PCL Write: 0.5054480600 0.4734905600 0.6692686400 0.5240863100 0.4241265900
APC Read: 0.5070073100 0.4676923600 0.6680336500 0.5252131100 0.4251422700
APC Write: 0.5063934600 0.4703554300 0.6696843400 0.5243528800 0.4245617800






Difference 0.0010543500 0.0030108600 0.0013251300 0.0005450600 0.0005346100
Winner APC PCL APC APC APC


PCL: 1.0217210070
APC: 1.0214337020


Average Difference 0.0002873050

PEAR Cache_Lite vs the Alternative PHP Cache (APC) Results

To test PEAR Cache_Lite vs the Alternate PHP Cache (APC) we benchmarked the cache write and cache read speed of both products.

Using the source HTML of three websites* we ran 10 sets of 100 cache writes/reads.

Test 1
PCL Read:0.51184113
PCL Write:0.51111087
APC Read:0.51217119
APC Write:0.51131264

APC faster: 0.00053183 s difference

Test 2
l Read:0.51026285
PCL Write:0.50957098
APC Read:0.51036641
APC Write:0.5097728

APC faster: 0.00030538 s difference

Test 3
PCL Read:0.51477005
PCL Write:0.51409317
APC Read:0.5148693
APC Write:0.51429797

APC faster: 0.00030405 s difference


Test 4
PCL Read:0.50122613
PCL Write:0.50274539
APC Read:0.49866188
APC Write:0.50025306

PCL faster: 0.00505658 s difference


Test 5
PCL Read:0.47731436
PCL Write:0.47628684
APC Read:0.47765029
APC Write:0.47654489

APC faster: 0.00059398 s difference


Test 6
PCL Read:0.50689836
PCL Write:0.50544806
APC Read:0.50700731
APC Write:0.50639346

APC faster: 0.00105435 s difference


Test 7
PCL Read:0.46756809
PCL Write:0.47349056
APC Read:0.46769236
APC Write:0.47035543

PCL faster: 0.00301086 s difference


Test 8
PCL Read:0.66712422
PCL Write:0.66926864
APC Read:0.66803365
APC Write:0.66968434

APC faster: 0.00132513 s difference


Test 9
PCL Read:0.52493462
PCL Write:0.52408631
APC Read:0.52521311
APC Write:0.52435288

APC faster: 0.00054506 s difference


Test 10
PCL Read:0.42504285
PCL Write:0.42412659
APC Read:0.42514227
APC Write:0.42456178

APC faster: 0.00053461 s difference




* Yahoo, Yahoo Developer > PHP : Cache Yahoo! Web Service REST Calls and Google

Wikibooks Programming PHP

Wikibooks > Programming PHP is an interesting find by the TRYNT guys. They mentioned it yesterday at the TRYNT blog.

PEAR Cache_Lite vs the Alternative PHP Cache (APC)

While reading through the Yahoo Developers website I stumbled upon PHP : Cache Yahoo! Web Service REST Calls. This HOWTO uses the Alternate PHP Cache (APC) as its caching mechanism while Odin Assemble on the other hand uses PEAR Cache_Lite. This motivated us to do a little bit of benchmarking. If APC proves faster then we'll integrate support :).

Wednesday, August 23, 2006

Encoding or Obsfucating? Historically Odin Assemble has been "encoded" using the Ioncube PHP Encoder. While this solution has fared us well in the past it comes with a price. The Ioncube PHP Encoder requires a platform specific "loader" that adds the complexity of Odin Assemble installations.

To reduce installation complexity we've decided to do away with the Ioncube encoding in the next public release. We plan to replace the Ioncube PHP Encoder with POBS.

Friday, August 18, 2006

Box.net is a nifty service. It's inexpensive (or free), can be easily mounted as a virtual drive in various operating systems and offers a useful API for developers. All those things being taken into consideration we've decided to implement a Box.net element in our (in development) backup system which provices an additional level of offsite protection.

Friday, August 11, 2006

The question "Do you have any tips for maximizing the performance of Odin Assemble?" was recently asked by an OA site owner.

Here are a few suggestions:
  • Pre-index your website (v3.0b only) - We recommend mode 1 or complete indexing for maximum performance. Remember to specify your pre-index data file with $use_idx.

  • Enable "page caching" - In your config give $_page_cache_life a reasonable value (in seconds). Since "page caching" acts globally you'll be caching all your elements and template interpolations. You can set "cache exclusions" as well for pages that are less then cache friendly (like login pages) by setting a regular expression value for $_avoid_cache.

  • Disable page compression - While page compression can save bandwidth its at the expense of the CPU. You'll save bandwidth through compression which can adversely effect performance. You can disable compression by setting $use_compression false.

  • Enable If Then Modified - By enabling If Then Modified you'll reduce your overall transfer by taking advantage of browser based caching. Enable If Then Modified by setting $use_if_then true.

  • Disable contextual keyword generation - If you are looking to extract every last ounce of speed you may want to disable contextual keyword generation by setting $use_contextual false. Why? Because the contextual keyword generation is dependent on third party web services this feature can effect performance.
Is your website still acting sluggish? If you are making use of a database now would be a good time to check it. Are you using elements you've developed? Try profiling your elements to see if any particular element is causing slow down.

Still frustrated? Let us know and we'll see what insight we can offer :).

Thursday, August 10, 2006

If you haven't made your way to TRYNT yet I encourage it greatly. The TRYNT team has used the Odin Assemble platform to launch twenty seven web services. The web services are provided free of charge and TRYNT is asking only for a bit of attribution.

For the Ning fans out there TRYNT has released two unique Ning based mash-ups: Ping Me Ning and Movie Data.

IMHO lots of cool stuff from the TRYNT camp!
Is is time for a control panel? We've made it this far without the need for more then a handy installer but with more then a few new tools and extensions a control panel maybe just what we need to keep everything organized.

Have no fear OA purists if a control panel is in the future it will be 100% optional. We feel strongly about OA sticking to it's roots.
While local backups are good, offsite backups are better. Why? Local backups are not efficient against fire, flood, theft not to mention many more disastrous situations.

Thats why we've put a lot of time and energy into developing an integrated offsite backup solution into Odin Assemble. The new OA backup system will provide redundant backup storage in multiple unique geographic locations.

Tuesday, August 08, 2006

Since the pre-indexing system is working like a charm we've decided to expand its function. A new "roll back" function and an offsite automated backup function are currently under development.

Friday, August 04, 2006

We've rehashed the popular My Timelines tool (Big Thanks to TRYNT for the iCal API) to now support Apple iCalendar files. With the advent of many Web 2.0 calendar applications the Apple iCalendar file is popping up all over the place.

Create an iCalendar Timeline