Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

is it safe to change defaultSlotSize of class BinaryStorer from 1024 to 10240 for performance? #703

Open
useryq8 opened this issue Mar 4, 2024 · 1 comment

Comments

@useryq8
Copy link

useryq8 commented Mar 4, 2024

Environment Details

  • MicroStream Version: EclipseStore 1.1.0
  • JDK version: java21.0.1
  • OS: ubuntu 17
  • Used frameworks: springboot 2.7.8

Describe the bug

For more higher performance , I adjust the defaultSlotSize of class BinaryStorer from 1024 to 10240, org.eclipse.serializer.persistence.types.DefaultObjectRegistry minimumCapacity from 1 to 1024;

the eclipse store performance is higher then default,
Could I do like this and it is safe? do any one know why this change can increase the performance? Thank you very much.
@fh-ms @hg-ms

` public class Default
implements BinaryStorer, PersistenceStoreHandler, PersistenceLocalObjectIdRegistry
{
///////////////////////////////////////////////////////////////////////////
// constants //
//////////////

	private final static Logger logger = Logging.getLogger(BinaryStorer.class);
	
	
	protected static int defaultSlotSize()
	{
		// why permanently occupy additional memory with fields and instances for constant values?
		return 10240; // anything below 1024 doesn't pay of
	}`

public final class DefaultObjectRegistry implements PersistenceObjectRegistry public static DefaultObjectRegistry New(final float hashDensity) { return New(hashDensity, 10240); }
img_v3_028e_4cb0e424-60ef-4865-9afe-83b79f0357dg

image

To Reproduce

change the defaultSlotSize of class org.eclipse.serializer.persistence.binary.types.BinaryStorer from 1024 to 10240
change the minimumCapacity of class org.eclipse.serializer.persistence.types.DefaultObjectRegistry from 1 to 1024

Expected behavior

EclipseStore works well

I

@hg-ms
Copy link
Contributor

hg-ms commented Mar 4, 2024

Yes, it’s safe to increase those values. Both define the initial size of internal data structures that hold management data of processed objects. In case of the DefaultObjectRegistry they hold management data for all persisted objects. In case of the BinaryStorer they contain temporary management data for the objects to be persisted. Those data structures are recreated with there size doubled if they get too small, which is an expensive operation.
A drawback of increasing those initial values is that the related data structures may occupy much more memory then required after they got increased.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants