On Sun, Dec 19, 2021 at 6:09 AM Ilya Maximets <[email protected]> wrote:
>
> ovsdb_datum_apply_diff_in_place() is much faster than the usual
> ovsdb_datum_apply_diff() in most cases, because it doesn't clone or
> compare unnecessary data.  Since the original destination datum is
> destroyed anyway, we might use the faster function here to speed up
> transaction processing.
>
> ovsdb_row_update_columns() with xor is mainly used by relay databases.
> So, this change should improve their performance.
>
> Signed-off-by: Ilya Maximets <[email protected]>
> ---
>  ovsdb/row.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
>
> diff --git a/ovsdb/row.c b/ovsdb/row.c
> index e83c60a21..40f53b0a5 100644
> --- a/ovsdb/row.c
> +++ b/ovsdb/row.c
> @@ -244,24 +244,18 @@ ovsdb_row_update_columns(struct ovsdb_row *dst,
>
>      for (i = 0; i < columns->n_columns; i++) {
>          const struct ovsdb_column *column = columns->columns[i];
> -        struct ovsdb_datum xor_datum;
>          struct ovsdb_error *error;
>
>          if (xor) {
> -            error = ovsdb_datum_apply_diff(&xor_datum,
> -                                           &dst->fields[column->index],
> -                                           &src->fields[column->index],
> -                                           &column->type);
> +            error = ovsdb_datum_apply_diff_in_place(
> +                            &dst->fields[column->index],
> +                            &src->fields[column->index],
> +                            &column->type);
>              if (error) {
>                  return error;
>              }
> -        }
> -
> -        ovsdb_datum_destroy(&dst->fields[column->index], &column->type);
> -
> -        if (xor) {
> -            ovsdb_datum_swap(&dst->fields[column->index], &xor_datum);
>          } else {
> +            ovsdb_datum_destroy(&dst->fields[column->index],
&column->type);
>              ovsdb_datum_clone(&dst->fields[column->index],
>                                &src->fields[column->index],
>                                &column->type);
> --
> 2.31.1
>

Acked-by: Han Zhou <[email protected]>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to