Repository: evidentlyai/evidently
Issue: Continuous looping of DatasetMissingValuesMetric on Report.run()
Root cause: Algorithmic Error

`>>>evidently.__version__`
'0.5.0'

Using a dataset with >1000 columns, I encountered an issue running Report.run() where the function just seemed to hang.

```
data_quality = Report(
metrics=[
                DatasetSummaryMetric(),
                generate_column_metrics(
                    ColumnSummaryMetric,
                    columns=list(df.columns),
                    skip_id_column=True,
                ),
                DatasetMissingValuesMetric(),
            ]
        )
data_quality.run(current_data=df, reference_data=df)
```

Diagnosing issue:

- Added print statements to the evidently\calculation_engine\engine.py file at the execute_metrics function.

```
        for metric, calculation in self.get_metric_execution_iterator():
            print(f"Processing metric: {metric}, calculation: {calculation}")
            if calculation not in calculations:
                print(f"Executing {type(calculation)}...")
                try:
                    calculations[metric] = calculation.calculate(context, converted_data)
                    print(f"Calculation result for {metric}: {calculations[metric]}")
                except BaseException as ex:
                    print(f"Error occurred during calculation for {metric}: {ex}")
                    calculations[metric] = ErrorResult(exception=ex)
            else:
                print(f"Using cached result for {type(calculation)}")

            context.metric_results[metric] = calculations[metric]
            print(f"Metric results updated for {metric}: {context.metric_results[metric]}")

        print("execute_metrics method completed.")
```

I experience continual looping.
Print statements output the following:

- `Processing metric: type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}), calculation: <evidently.calculation_engine.python_engine.PythonEngine.get_metric_implementation.<locals>._Wrapper object at 0x0000020E99ADD750>`
- `Executing <class 'evidently.calculation_engine.python_engine.PythonEngine.get_metric_implementation.<locals>._Wrapper'>...`
- `Calculation result for type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}): type='evidently:metric_result:DatasetMissingValuesMetricResult' current=DatasetMissingValues(type='evidently:metric_result:DatasetMissingValues', different_missing_values={'': 0, -inf: 0, None: 11878, inf: 0}, number_of_different_missing_values=1, different_missing_values_by_column={`
- `Metric results updated for type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}): type='evidently:metric_result:DatasetMissingValuesMetricResult' current=DatasetMissingValues(type='evidently:metric_result:DatasetMissingValues', different_missing_values={'': 0, -inf: 0, None: 11878, inf: 0}, number_of_different_missing_values=1, different_missing_values_by_column={'`
- `Processing metric: type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}), calculation: <evidently.calculation_engine.python_engine.PythonEngine.get_metric_implementation.<locals>._Wrapper object at 0x0000020E99ADDA20>`
- `Executing <class 'evidently.calculation_engine.python_engine.PythonEngine.get_metric_implementation.<locals>._Wrapper'>...`
- `Calculation result for type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}): type='evidently:metric_result:DatasetMissingValuesMetricResult' current=DatasetMissingValues(type='evidently:metric_result:DatasetMissingValues', different_missing_values={'': 0, -inf: 0, None: 11878, inf: 0}, number_of_different_missing_values=1, different_missing_values_by_column={'col1':....}}`
- `Metric results updated for type='evidently:metric:DatasetMissingValuesMetric' options=Options(color=None, render=None, custom={}, data_definition=None) missing_values=frozenset({'', -inf, None, inf}): type='evidently:metric_result:DatasetMissingValuesMetricResult' current=DatasetMissingValues(type='evidently:metric_result:DatasetMissingValues', different_missing_values={'': 0, -inf: 0, None: 11878, inf: 0}, number_of_different_missing_values=1, different_missing_values_by_column={'col1':...}}`
- etc. et.c

Edit: It eventually completed after ~20 minutes, just runs extremely slowly