Hi,
The problem is not really the serialize / unserialize functions.
The problem is that for each cart, the system does a full load of the whole cart, the products, the shipping, the payment, the custom fields, the addresses, etc. The same data loaded during the checkout.
We do that because it is easy to get the full total and the number of products in the carts that way. We could optimize and load the carts with way less queries and memory and processing. The problem is that the triggers that are called during the loading of a cart wouldn't work without the normal data.
For example a plugin modifying the price of a product during the cart loading might crash without the standard data available in the trigger and not calling the triggers would means that the plugins wouldn't be able to do what they are supposed to do on the data of the cart. So for example, the donation plugin wouldn't be called and you would see a cart amount at 0 instead of the amount entered by the customer.
It would also be complex to take into account the discounts, the coupons, etc.
In short, doing it like we do simplifies a lot of things on that page and allows us to display accurate information. The drawback is that this page consumes an important amount of resources compared to the rest of HikaShop.
That's a choice we made as before we regularily had support requests that the amounts displayed there were not accurate as they didn't take everything into account like on the frontend.