3v4l.org

run code in 300+ PHP versions simultaneously
<?php bulkSaveEditorData( editorData: any, options?: { isAutoSave?: boolean; displayName?: string } ) { this._sectionsService.saveEditorData(this.reviewUId, editorData).subscribe({ next: res => { if (!(options?.isAutoSave && options.displayName)) { this.toastrService.success(ApiConstant.MSG_EDITOR_DATA_SAVE_SUCCESS); } }, error: err => { this.toastrService.error(ApiConstant.MSG_EDITOR_DATA_SAVE_FAIL); }, }); } bulkEditorBulkSequenceUpdate( editorData: any, message: string, options?: { isAutoSave?: boolean; displayName?: string } ) { this._sectionsService .editorBulkSequenceUpdate(this.reviewUId, editorData) .subscribe({ next: res => { if (!(options?.isAutoSave && options.displayName)) { this.toastrService.success(message); } }, error: err => { this.toastrService.error(ApiConstant.MSG_EDITOR_DATA_SAVE_FAIL); }, }); } onSaveAction(sectionObj) { sectionObj.data.updatedBy = this.userInfo && this.userInfo.UserName ? this.userInfo.UserName : this.currentUserName; sectionObj.data.updatedOn = this.currentTimestamp; this.cASectionService.onSaveAction(sectionObj); this.onPasteVisibitliy = false; this.SaveActionCallback.emit({ sectionObject: sectionObj, editorContent: sectionObj.data?.editorData, }); this.updateTimelineStatusForSection(sectionObj); } onEditAction(sectionObj) { this.editorData = this.cASectionService.onEditAction(sectionObj); this.EditActionCallback.emit({ sectionObject: sectionObj, editorContent: sectionObj.sectionDescription, }); } onCopyAction(sectionObj) { const selectedEditor = this.editorComponent.find( p => p.ID == sectionObj.parameterId ); let htmldata = ""; if (!sectionObj.isRTE) { htmldata = sectionObj.sectionDescription; } else { htmldata = selectedEditor?.getEditorSelectedContent(); if (!htmldata) { htmldata = selectedEditor?.getEditorData(); } } if (navigator && navigator.clipboard && navigator.clipboard.write) { const blob = new Blob([htmldata], { type: ApiConstant.TEXT_HTML }); const clipboardItem = new ClipboardItem({ "text/html": blob }); navigator.clipboard .write([clipboardItem]) .then(() => {}) .catch(err => { this.toastrService.error(ApiConstant.MSG_COPY_ERROR); }); } } onPasteAction(sectionObj) { const selectedEditor = this.editorComponent.find( p => p.ID == sectionObj.parameterId ); navigator.clipboard .read() .then(items => { let contentType: string = ""; for (const item of items) { if (item.types.includes(ApiConstant.TEXT_HTML)) { contentType = ApiConstant.TEXT_HTML; } else if (item.types.includes(ApiConstant.TEXT_PLAIN)) { contentType = ApiConstant.TEXT_PLAIN; } item.getType(contentType).then(blob => { blob.text().then(html => { selectedEditor.insertContentIntoEditor(html); }); }); break; } }) .catch(err => { this.toastrService.error(ApiConstant.MSG_Paste_ERROR); }); } editorContentChange(sectionObj, editorContent: any) { if (sectionObj && sectionObj.data) { sectionObj.data.editorData = editorContent; } else { sectionObj.data = { editorData: editorContent, parameterDisplayName: sectionObj.parameterDisplayName, parameterId: sectionObj.parameterId, reviewSectionId: this.reviewSectionId, sequence: sectionObj.sequence, reviewUId: this.reviewUId, }; } const upateParams: ParameterDataModel = new ParameterDataModel(); upateParams.reviewSectionId = WatchlistSections.CREDIT_ANALYSIS; upateParams.parameter = structuredClone(sectionObj); upateParams.parameter.data = editorContent; this.EditorContentChange.emit(upateParams); } onDeleteEditor(section) { this._sectionsService.NotifyDeleteEditor(section); } focusInRTE(event) { this.onPasteVisibitliy = event; } editorSaveTextIn(content: string, sectionObj) { sectionObj.data.updatedBy = this.userInfo && this.userInfo.UserName ? this.userInfo.UserName : this.currentUserName; sectionObj.data.updatedOn = this.currentTimestamp; sectionObj.data.editorData = content; sectionObj.sectionDescription = content; this.cASectionService.onSaveAction(sectionObj); } editorTextIn(editorContent: string, sectionObj) { if (sectionObj) { if (!sectionObj.data) { sectionObj.data = {}; } sectionObj.data.editorData = editorContent; sectionObj.sectionDescription = editorContent; if (this.cASectionService.enableSimultaneous) { this.cASectionService.onEditAction(sectionObj); } } } getEditorForSection(section): CustomizedEditorComponent { return this.editorComponent?.find(p => p.ID === section.parameterId); } onSimultaneous(event: MultiUserEditConfig) { this.simultaneous = event; } setAutoNotification(event: string) { this.autosaveNotification = event; setTimeout(() => (this.autosaveNotification = null), 8000); } resetSimultaneousNotification(event: any) { this.autoSimultaneousNotification = event; setTimeout(() => (this.autoSimultaneousNotification = null), 8000); } onHistory(section) { const sectionDetails = section.data; if (sectionDetails.editorData != null) { this.trackChangesComp.showTrackChangesModal( this.reviewUId === undefined ? sectionDetails.reviewUId : this.reviewUId, this.reviewSectionId, section.parameterId ); } this.trackChanges.showModal(); } onTrackChangesCancel() { if (this.trackChanges) { this.trackChanges.onCancelClick(); } } showTooltip() { return this.interimReviewConstants.CREDIT_PROFILE_MATERIAL_CHANGE; } materialChangeCheckboxUpdate( value: boolean, isInitialising: boolean = false ) { this.materialChangeSelectedValue = value ?? false; this.creditProfileSelectionUpdated.emit(this.materialChangeSelectedValue); const dataObject = this.sectionData.find( item => item.parameterId === InterimReviewCASections.MATERIAL_CHANGE ); const section = { data: null, }; if (dataObject) { section.data = { editorData: null, parameterDisplayName: dataObject.parameterDisplayName, parameterId: InterimReviewCASections.MATERIAL_CHANGE, reviewSectionId: this.reviewSectionId, reviewUId: this.reviewUId, sequence: dataObject.sequence, materialChange: this.materialChangeSelectedValue, }; const shouldSave = (isInitialising && value === null) || !isInitialising; if (shouldSave) { this.bulkSaveEditorData([section.data], { isAutoSave: true, displayName: section.data.parameterDisplayName, }); if (dataObject?.isDefaultView === true) { this.updateTimelineStatusForSection({ parameterName: dataObject.parameterName, parameterId: dataObject.parameterId, isDefaultView: dataObject.isDefaultView, data: section.data, }); } } } } }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.5.00.0240.00917.18
8.4.150.0340.00819.68
8.4.140.0330.01317.71
8.4.130.0370.00517.61
8.4.120.0340.01117.91
8.4.110.0310.01317.93
8.4.100.0360.00817.96
8.4.90.0350.01017.90
8.4.80.0350.01017.84
8.4.70.0320.01217.95
8.4.60.0320.01317.87
8.4.50.0360.00918.00
8.4.40.0360.01317.69
8.4.30.0390.00717.48
8.4.20.0450.00617.55
8.4.10.0400.00817.77
8.3.280.0330.01018.11
8.3.270.0380.00817.18
8.3.260.0320.01117.18
8.3.250.0370.00717.18
8.3.240.0310.01417.18
8.3.230.0350.00717.18
8.3.220.0380.00517.18
8.3.210.0330.01017.18
8.3.200.0340.01017.18
8.3.190.0360.00717.18
8.3.180.0380.00717.18
8.3.170.0360.00917.18
8.3.160.0320.01317.18
8.3.150.0370.00817.18
8.3.140.0340.01217.18
8.3.130.0350.00617.18
8.3.120.0330.00817.18
8.3.110.0330.00717.18
8.3.100.0390.01017.18
8.3.90.0430.00617.18
8.3.80.0420.00717.18
8.3.70.0360.01017.18
8.3.60.0390.00817.18
8.3.50.0390.00617.18
8.3.40.0340.01217.73
8.3.30.0260.01017.85
8.3.20.0270.00817.85
8.3.10.0290.00617.81
8.3.00.0190.00717.95
8.2.290.0300.00717.18
8.2.280.0340.00417.18
8.2.270.0290.00817.18
8.2.260.0320.00717.18
8.2.250.0270.01117.18
8.2.240.0310.00717.18
8.2.230.0320.00517.18
8.2.220.0300.00817.18
8.2.210.0310.00817.18
8.2.200.0290.00817.18
8.2.190.0320.00717.18
8.2.180.0310.00717.18
8.2.170.0280.00817.83
8.2.160.0260.01017.77
8.2.150.0320.00617.89
8.2.140.0270.01117.81
8.2.130.0290.00917.65
8.2.120.0290.01017.60
8.2.110.0330.00817.90
8.2.100.0260.01217.69
8.2.90.0300.00717.53
8.2.80.0280.00817.90
8.2.70.0260.01017.65
8.2.60.0290.00717.78
8.2.50.0280.00817.62
8.2.40.0300.00517.65
8.2.30.0260.01017.55
8.2.20.0320.01117.59
8.2.10.0320.01017.59
8.2.00.0330.00917.51

preferences:
141.72 ms | 1011 KiB | 7 Q