Update sanitize method to only call replaceAll if needed - save a ton of memory allocations (gigs) & runtime (~10%) in big exports.

This commit is contained in:
2023-10-12 19:09:52 -05:00
parent 0c2b078af9
commit d905efb1c4
2 changed files with 80 additions and 2 deletions

View File

@ -80,8 +80,23 @@ public class QRecordToCsvAdapter
/*******************************************************************************
** todo - kinda weak... can we find this in a CSV lib??
*******************************************************************************/
private String sanitize(String value)
static String sanitize(String value)
{
return (value.replaceAll("\"", "\"\"").replaceAll("\n", " "));
/////////////////////////////////////////////////////////////////////////////////////
// especially in big exports, we see a TON of memory allocated and CPU spent here, //
// if we just blindly replaceAll. So, only do it if needed. //
/////////////////////////////////////////////////////////////////////////////////////
if(value.contains("\""))
{
value = value.replaceAll("\"", "\"\"");
}
if(value.contains("\n"))
{
value = value.replaceAll("\n", " ");
}
return (value);
}
}