fmwebschool.com
Top Experts [learn more]Top 4-10
webko

8918 K
bandmandq

2408 K
Genx

1525 K
4. tcmeyers
5. kbata
6. Martie
7. Hammerton
8. rrenfrow
9. bneeman
10. plegler
Welcome, Guest. Please login or register.
September 02, 2010, 04:52:25 PM

Login with username, password and session length
Search:     Advanced search
FMWebschool releases more educational FMStudio webinars - check them out here:
http://www.fmwebschool.com/webinars.php
25313 Posts in 5589 Topics by 3956 Members
Latest Member: rncompubooks
* Home Help Search Calendar Login Register
+  fmwebschool.com
|-+  PHP Web Publishing Technologies
| |-+  FileMaker's New PHP API
| | |-+  FX.php vs FileMaker API Benchmarks Discussion
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: FX.php vs FileMaker API Benchmarks Discussion  (Read 5814 times)
Michael Petrov
Chief Software Developer
Administrator
Hero Member
*****
Offline Offline

Posts: 4278
Kudos: 15397




Applications:
« on: February 20, 2008, 08:48:22 AM »

Please use this thread to discuss the FX.php vs FileMaker API benchmark article from the February 2008 FMWebschool newsletter.
Logged

Michael Petrov,
Chief Software Developer
FMWebschool
800.353.7950
michael@fmwebschool.com
Keep up with our development, follow me on Twitter
johnonz
Newbie
*
Offline Offline

Posts: 4


« Reply #1 on: February 20, 2008, 11:13:02 AM »

Hi - a colleague here uses FMandPHP (www.fm-and-php.info) to serve a FM8 database. He reports it is a very simple class to use and in practice it seems fast. It would be fascinating to know if that simplicity was also accompanied by speed relative to the API or FX. I'm using a commercial API based product with FMPro Server 9 and finding it slow compared to an old CDML based one. The web pages are built dynamically using lots of loops and condition statements. The repetitive instantiation of the API class may be a factor in this. However, I'm only running it on a test server at the moment. I look forward to Part 2 of the article but would love to know more about FMandPHP's speed. It pretty much looks as though it's development has died though.
Logged
webko
Global Moderator
Hero Member
*****
Offline Offline

Posts: 1648
Kudos: 8918



WWW
Applications:
« Reply #2 on: February 20, 2008, 02:33:05 PM »

Can you given me a link to that article or mail it to me backchannel please Michael?

A discussion on another list indicated that a simple speed comparison saw FX outperform the API about 7:1, IIRC
Logged

Niche IT Pty Ltd
Suite 3A, Forest Rd, Hurstville NSW Australia
tim_at_nicheit.com.au
Michael Petrov
Chief Software Developer
Administrator
Hero Member
*****
Offline Offline

Posts: 4278
Kudos: 15397




Applications:
« Reply #3 on: February 20, 2008, 02:35:38 PM »

Can you given me a link to that article or mail it to me backchannel please Michael?

A discussion on another list indicated that a simple speed comparison saw FX outperform the API about 7:1, IIRC

Not a problem, it is linked from the newsletter that has been emailed out a few hours ago (if you are not on it, you can join on the FMWebschool home page).

http://fmwebschool.com/newsletter/fx_api_benchmarks_v1.pdf

FX.php is certainly faster at this point, but not in any way 7:1 (the whole point of the benchmarks was to show how ridiculous that claim is).

Best Regards,
Michael Petrov

Logged

Michael Petrov,
Chief Software Developer
FMWebschool
800.353.7950
michael@fmwebschool.com
Keep up with our development, follow me on Twitter
webko
Global Moderator
Hero Member
*****
Offline Offline

Posts: 1648
Kudos: 8918



WWW
Applications:
« Reply #4 on: February 20, 2008, 05:52:33 PM »

Well, I didn;t make that claim, and neither have I replicated the code used to make that claim - here it is for reference though:

Code:
<?php

require_once('performance_server_data.php');
require_once(
'FileMaker.php');
require_once(
'../FX/FX.php');
require_once(
'../FX/FX_Fuzzy_Debugger.php');

$loopCount 25;
$searchCriteriaArray = array('First_Name' => 'a');
$testCount 5;

function 
GetFAPExecutionTime()
{
    global 
$loopCount$searchCriteriaArray;

    
$startTime microtime(true);
    for (
$i 0$i $loopCount; ++$i) {
        
// configure a connection to FileMaker Server Advanced
        
$contactsListConnection = new FileMaker('Contacts.fp7'FM_IP ':' FM_PORTFM_USERNAMEFM_PASSWORD);
        
// set database and layout information
        
$contactsListQuery $contactsListConnection->newFindCommand('web_list');
        
// add find parameters
        
foreach ($searchCriteriaArray as $fieldName => $fieldValue) {
            
$contactsListQuery->addFindCriterion($fieldName$fieldValue);
        }
        
// retrieve the records in this database matching the specified parameters available to the current user
        
$contactsObject $contactsListQuery->execute();
        
$contactsList $contactsObject->getRecords();
    }
    
$endTime microtime(true);
    return (
$endTime $startTime);
}

function 
GetFXExecutionTime()
{
    global 
$loopCount$searchCriteriaArray;

    
$startTime microtime(true);
    for (
$i 0$i $loopCount; ++$i) {
        
// configure a connection to FileMaker Server Advanced
        
$contactsListQuery = new FX(FM_IPFM_PORTFM_VERSION);
        
// set database and layout information
        
$contactsListQuery->SetDBData('Contacts.fp7''web_list');
        
// set database username and password
        
$contactsListQuery->SetDBUserPass(FM_USERNAMEFM_PASSWORD);
        
// add parameter array for new record
        
$contactsListQuery->AddDBParamArray($searchCriteriaArray);
        
// create a new record
        
$contactsList $contactsListQuery->DoFXAction(FX_ACTION_FIND);
    }
    
$endTime microtime(true);
    return (
$endTime $startTime);
}

?>

<html>
    <head>
        <title>FX Error Tester</title>
    </head>
    <body>
        <h1>Contact List</h1>
        <ul>
<?php

$executionTimeFAP 
0;
$executionTimeFX 0;

for (
$i 0$i $testCount; ++$i) {
    
// do F.A.P. iteration
    
$fapTime GetFAPExecutionTime();
    echo(
"            <li>F.A.P.: {$fapTime}</li>\n");
    
$executionTimeFAP += $fapTime;
    
// do FX.php iteration
    
$fxTime GetFXExecutionTime();
    echo(
"            <li>FX.php: {$fxTime}</li>\n");
    
$executionTimeFX += $fxTime;
}

?>

        </ul>
        <br />
        <br />
        <p>Average F.A.P. Time: <?php echo(($executionTimeFAP $testCount)); ?></p>
        <p>Average FX.php Time: <?php echo(($executionTimeFX $testCount)); ?></p>
    </body>
</html>

I do know for a fact that a certain, fairly large and complex query that I wrote times out under the API and executes in a few seconds under FX - I use 30 second timeouts...
Logged

Niche IT Pty Ltd
Suite 3A, Forest Rd, Hurstville NSW Australia
tim_at_nicheit.com.au
Michael Petrov
Chief Software Developer
Administrator
Hero Member
*****
Offline Offline

Posts: 4278
Kudos: 15397




Applications:
« Reply #5 on: February 20, 2008, 06:14:29 PM »

Hi webko,

I know that the claim was not yours, Chris Hansen was the one that made it - as for the differences, the main thing I can think of is the max settings (API has 'all' by default if I am not mistaken) that are different on the API. Other then that API treats portals very differently and resolves portal relationships more reliably then FX. One example: if you have a child record in a portal referencing a parent record in a calculation, but having many parents - FX gives you the results of that calculation for the first parent record, while API actually resolves the context of the current record (which could be any parent record, not necessarily the first) - so that could make things slower on the API under some very specific conditions which require more relationship related work in the database (not for these benchmarks though, in this case the slow down is in some other areas).

I would be interested to hear more details about your complex query though.

Best Regards,
Michael Petrov
Logged

Michael Petrov,
Chief Software Developer
FMWebschool
800.353.7950
michael@fmwebschool.com
Keep up with our development, follow me on Twitter
webko
Global Moderator
Hero Member
*****
Offline Offline

Posts: 1648
Kudos: 8918



WWW
Applications:
« Reply #6 on: February 20, 2008, 06:46:17 PM »

(API has 'all' by default if I am not mistaken) that are different on the API.

A fair point - my default copy of FX seems to have a default of 50, if I'm reading line 1569 correctly...

And I'll have to dig up the API version of the query from my archive before I can present that...
Logged

Niche IT Pty Ltd
Suite 3A, Forest Rd, Hurstville NSW Australia
tim_at_nicheit.com.au
gbargsley
Hero Member
*****
Offline Offline

Posts: 172


« Reply #7 on: February 21, 2008, 03:57:17 AM »

These benchmarks are pretty good and explain some of my initial issues with the FM API.

I notice that you used FMS 9v2 for your benchmarks.  Has any discussion come up where you would execute the benchmark again against FMS 9v3.  This release has actually made it possible for me to use the FM API in a stable and workable environment.  I am just wondering if the enhancements made to v3 will bring FM API closer to the FX.php results.

Garry
Logged
Michael Petrov
Chief Software Developer
Administrator
Hero Member
*****
Offline Offline

Posts: 4278
Kudos: 15397




Applications:
« Reply #8 on: February 21, 2008, 07:19:50 AM »

Hi Garry,

I would guess there would not be any difference since the API itself was not updated, and unless they really overhauled some things in the fmresultset.xml grammar it shouldn't make a difference. However when working on part 2, I will re-run the tests of both before and after my tweaks on the latest version at that point (which will likely be 9v3).

Best Regards,
Michael Petrov
Logged

Michael Petrov,
Chief Software Developer
FMWebschool
800.353.7950
michael@fmwebschool.com
Keep up with our development, follow me on Twitter
FMWebschool
FMWebschool Team
Administrator
Hero Member
*****
Offline Offline

Posts: 1025
Kudos: 1383


Allyson Olm, Chief Developer


WWW
Applications:
« Reply #9 on: February 22, 2008, 07:56:02 AM »

Part two of this article will be run in our March Newsletter which you can sign up for at http://www.fmwebschool.com/newsletter.php - I have also submitted the details below to a couple other mailing list.  Hopefully a nice healthy discussion will come of this.


Overview

When web publishing with PHP and the FileMaker database, there are two predominant options on the market at this time: FX.php and the FileMaker PHP API. FX.php is an older third party library, that is compatible with FileMaker Server versions 6 and up, and is open source.

The FileMaker API is a proprietary library developed by FileMaker Inc and is compatible with FileMaker Server 9 and above. Both these libraries offer a fully functional interface to a FileMaker database and can be used very quickly in a PHP application, there are many reasons to use each one, and this document will focus on the performance aspect of each library.

Objective

Within the FileMaker community there is an ongoing debate on which library should be used, which one is faster, and what is going to be the long term winner in this "battle".

This document attempts to place an unbiased perspective on the performance of each library in benchmark tests, and will aim to provide a reason for the differences that are found. In this first set of tests only the results are going to be presented, and a future document will follow with technical analysis as well as recommendations for performance enhancements.

Current Situation and Common Myths

Currently the accepted opinion within the community is that FX.php is the faster library. The advantages of the FileMaker API are generally cited as better code, and official endorsement by FileMaker Inc, as well as it being a developing technology with a lot of potential and a large budget behind it.

The degree to which FX.php is faster then the FileMaker API has been a hot topic, with approximations as low as a few percent to claims of FX.php being 7x faster - this benchmark attempts to put a more concrete number on this specific point.

Download the Documentation Here:

http://fmwebschool.com/newsletter/fx_api_benchmarks_v1.pdf

Download our sample files:

http://www.fmwebschool.com/newsletter/fx_api_benchmarks_v1.zip


In Kindness
Stephen Knight
Ask me about FileMaker Hosting for Mobile Devices http://www.fmgateway.com 800.353.7950
http://www.fmgateway.com
Logged

In Kindness
FMWebschool Team
http://www.fmwebschool.com
http://www.fxforge.net
800.353.7950
Pages: [1] Print 
« previous next »
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!