Jump to content
crayfish

JSON parsing performance comparison

Recommended Posts

crayfish    0

I've been using Daniel Smith's JSON scripts from (http://www.modularfilemaker.org/module/json/) to parse JSON.

It's worked quite reliably (thanks Daniel!), but I'm wondering if anyone has compared its parsing speed to MBS's JSON plugin or the new native Filemaker 16 JSON functions? I'm still on 15. I'm working with some larger JSON files that are taking a long time to parse and hoping for a faster solution.

Any data on which option parses JSON fastest? Any disadvantages/advantages to each option?

Thanks!

Share this post


Link to post
Share on other sites
Wim Decorte    446

Haven't compared it to MBS parsing but I was using both the modularFileMaker ones and the BaseElements one.

The CF and scripted version on ModularFileMaker I abandoned for speed reasons.  The BE plugin was just faster.  The FM16 ones seemed to me to be on par.

Share this post


Link to post
Share on other sites
ggt667    6
Posted (edited)

What is the time spent on parsing intervals of 10 000, 100 000, 1 000 000 records 10 fields, datatypes mixed( timestamp, text[5-255], number )?

Did you make a benchmark between FM and MBS's methods?

Edited by ggt667

Share this post


Link to post
Share on other sites

Yes. FileMaker parses the JSON for every single query.

The MBS Plugin can parse once and than reuse the same structures in memory to query. So the plugin will always be magnitudes faster.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By TJ53
      On a separate thread I asked Bruce Robertson if the new FM16 JSON functions could be used together with the virtual list technique he created. I haven’t experimented with it but I wonder if JSON adapt well to this great technique. Any thoughts? thanks!
    • By 357manch
      With the introduction of cURL options in FM16's Insert from URL script step I've been investigating the possibility of being able to save a copy of my FM solution directly to my Dropbox folder using the https://content.dropboxapi.com/2/files/upload element from Dropbox V2 API.
       
      I've successfully created the access token to pass through as part of this step and the Insert from URL script step successfully creates the stated folder and file in my Dropbox.  However, the file size is always 0 bytes.  I've tried 2 different methods
       
      METHOD 1
      #Export a compacted copy of this file to Temporary Folder
      Set Variable [ $file_path ; Get ( TemporaryPath ) & "Solution.fmp12" ]
      Save a Copy as [ "$file_path" ; compacted ]
       
      #Set my cURL options to variable
      Set Variable [ $curl_header ;
      "curl -X POST https://content.dropboxapi.com/2/files/upload \\" & ¶ &
      "--header \"Authorization: Bearer " & PREFERENCES::Dropbox_AccessToken & "\"  \\" & ¶ &
      "--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"/DB2FM/Solution.fmp12\\\"}\" \\" & ¶ &
      "--header \"Content-Type: application/octet-stream\" \\" & ¶ &
      "--data-binary @" & $file_path ]
       
      #Dropbox URL
      Set Variable [ $dropbox_url ; "https://content.dropboxapi.com/2/files/upload" ]
       
      #Make Request - Set to variable adn then format to JSON field
      Insert from URL [ Verify SSL Certificates ; With dialog: Off ; $json ; $dropbox_url ; cURL options: $curl_header ]
      Set Field [ PREFERENCES:Dropbox_JSON ; JSONFormatElements ( $json ) ]
       
       
       
      METHOD 2
      #Export a compacted copy of this file to Temporary Folder and then import to a container field
      Set Variable [ $file_path ; Get ( TemporaryPath ) & "Solution.fmp12" ]  //note1
      Save a Copy as [ "$file_path" ; compacted ]  //note1
      Insert File [ PREFERENCES::Container ; "$file_path" ]  //note1
      #Set variable following instructions on FileMaker website which states:
      #  -  Direct file access is replaced with a FileMaker variable prefixed by the @ character.
      #  -  To access a file, you can set the variable to a container field, which contains the file, then use that variable as the parameter of the cURL option.
      Set Variable [ $container_path ; PREFERENCES::Container ]
       
      #Set my cURL options to variable
      Set Variable [ $curl_header ; 
      "curl -X POST https://content.dropboxapi.com/2/files/upload \\" & ¶ &
      "--header \"Authorization: Bearer " & PREFERENCES::Dropbox_AccessToken & "\"  \\" & ¶ &
      "--header \"Dropbox-API-Arg: {\\\"path\\\": \\\"/DB2FM/Solution.fmp12\\\"}\" \\" & ¶ &
      "--header \"Content-Type: application/octet-stream\" \\" & ¶ &
      "--data-binary @" & $container_path ]
       
      #Dropbox URL
      Set Variable [ $dropbox_url ; "https://content.dropboxapi.com/2/files/upload" ]
       
      #Make Request - Set to variable adn then format to JSON field
      Insert from URL [ Verify SSL Certificates ; With dialog: Off ; $json ; $dropbox_url ; cURL options: $curl_header ]
      Set Field [ PREFERENCES:Dropbox_JSON ; JSONFormatElements ( $json ) ]
       
       
       
      JSON Response For Both Methods
       
      I get the following JSON Response for both methods
      {
          "client_modified" : "2017-05-16T11:22:47Z",
          "content_hash" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
          "id" : "id:heJWQ1SWwJsAAAAAAcMWNw",
          "name" : "Solution.fmp12",
          "path_display" : "/DB2FM/Solution.fmp12",
          "path_lower" : "/db2fm/solution.fmp12",
          "rev" : "3a0412f00f58892",
          "server_modified" : "2017-05-16T11:22:48Z",
          "size" : 0
      }
       
      Any ideas as to why the file is created but with no content.  I've also tried this with a number of different file types (.png, .txt, .pdf) by manually inserting a file into the container and greying out the 3 steps marked //note1 above but the result is always the same.
       
    • By jbante
      FileMaker 16 introduced a collection of built-in functions for manipulating data serialized as JSON. This makes it easier for FileMaker applications to interact with many web services. This will also make JSON the de facto standard format for scripts within FileMaker to pass parameters and results to each other, improving code sharing within the FileMaker community.
      JSON does not have a broad palette of scalar data types to choose from: text, number, boolean, and null. Even with those, FileMaker's JSONGetElement function always returns a text result, even when the serialized JSON value is a number or boolean. So I made a handful of custom functions and scripts for sending and receiving typed data with JSON.
      The module is hosted on GitHub, or you can download it directly.
    • By AlanTrewartha


      View File fmresultsetjson.xsl
      XSLT to convert Filemaker's REST web-service XML response into clean JSON
      https://twitter.com/alantrewartha
      2017-03-06
      Adapted from the original Six Fried Rice XSLT here http://sixfriedrice.com/wp/products/filemaker-to-json-converter/
      Changed:
      * single quotes to JSON-standard double-quotes
      * removed "fieldDefinitions" block (personal preference)
      * stopped every field value being presented as an [ array ] even when not a "repeating field"
      * added whitespace escaping code
      The white-space escaping code was entirely cribbed from
      https://github.com/doekman/xml2json-xslt/blob/master/xml2json.xsl
      Submitter AlanTrewartha Submitted 03/06/2017 Category Solutions FM Version FM Version: 0  
    • By AlanTrewartha
      XSLT to convert Filemaker's REST web-service XML response into clean JSON
      https://twitter.com/alantrewartha
      2017-03-06
      Adapted from the original Six Fried Rice XSLT here http://sixfriedrice.com/wp/products/filemaker-to-json-converter/
      Changed:
      * single quotes to JSON-standard double-quotes
      * removed "fieldDefinitions" block (personal preference)
      * stopped every field value being presented as an [ array ] even when not a "repeating field"
      * added whitespace escaping code
      The white-space escaping code was entirely cribbed from
      https://github.com/doekman/xml2json-xslt/blob/master/xml2json.xsl
×

Important Information

By using this site, you agree to our Terms of Use.