tracker issue : CF-4206264

select a category, or use search below
(searches all categories and all time range)

CFFile significantly slower then previously versions

| View in Tracker

Status/Resolution/Reason: Open//

Reporter/Name(from Bugbase): Toby W. / ()

Created: 12/05/2019

Components: File Management, CFFile

Versions: 2018

Failure Type: Non Functioning

Found In Build/Fixed In Build: CF2018 /

Priority/Frequency: Normal / All users will encounter

Locale/System: English / Win 2012 Server x64

Vote Count: 1

Problem Description:

cffile action = "copy" is about 3-4 times slower in CF 2018 compared to CF 11.

Processing images using the cffile tag is much slower on CF 2018 then CF 11. Doing a simple copy take a lot longer. Add that to processing multiple images and the time can increase significantly.

I have tested this with the same spec machines, fresh installed & upgrade. Both win 2012 and 2016 OS. 

Configurations for CF are the same.

CF 11 -  11,0,18,314030 , Java 1.8.0_171   

CF 2018 - 2018,0,06,316308, Java 11.0.1  

Steps to Reproduce:

Repro attached to bug.

Run something like:

<cffile action = "copy" source = "C:/Temp/testimg1.JPG" destination = "C:/Temp/testimg2.JPG">

on CF 11 then repeat on CF 2018

Actual Result:

Process taking 3-4 times longer

Expected Result:

Similar run times to CF 11

Any Workarounds:


Revert to CF 11 or use third party tools



Here are some timings for the testing I have done using the repro attached This is made substantially worse when using S3:// which is where we are noticing the difference CF11 Local Test 1: 0ms Test 2: 0ms Test 3: 1ms S3 Test 1: 328ms Test 2: 578ms Test 3: 391ms CF 2018 Local Test 1: 4ms Test 2: 5ms Test 3: 4ms S3 Test 1: 803ms Test 2: 1290ms Test 3: 968ms
Comment by Toby W.
31929 | December 05, 2019 09:12:52 AM GMT
ALTERNATIVE: If you are copying/syncing static resources to S3, you may want to consider using CFExecute with S3Express (portable CLI/command line). I've found it to be a better alternative, supports multiple threads (faster), gets updated more often & supports newer S3 features, their dev team is responsive and you can auto-generate a log of what transactions were performed. We generate a BAT file, use CFExecute with an immediate timeout and then check the file system for a log at the end of the transaction. This prevents us from locking a thread or consuming RAM dedicated to Java. Here's a sample command line. (The S3Express website has many more samples.) We've used S3Express for syncing digital assets for commercial sale (using time-limited download link), backing up SQL and syncing JS/CSS resources to our CDN. (We initially desired to use the built-in S3 support, but found it to be slow, unreliable and didn't support latest S3 features.)
Comment by James M.
31930 | December 06, 2019 02:56:55 PM GMT