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

[FR]: Add ReadOnlySpan-based overload for FirebaseAnalytics.LogEvent #1013

Open
abogarsukov-braingames opened this issue May 3, 2024 · 2 comments

Comments

@abogarsukov-braingames
Copy link

abogarsukov-braingames commented May 3, 2024

Description

Currently there are overloads of the FirebaseAnalaytics.LogEvent for a single parameter and array of parameters. In most cases this is suboptimal as each event requires allocating an array of parameters. Adding an overload accepting ReadOnlySpan<Parameter> would help developers avoid unnecessary allocations.

API Proposal

Add a new LogEvent overload like this:

public unsafe static void LogEvent(string name, ReadOnlySpan<Parameter> parameters)
{
    IntPtr[] array = new IntPtr[parameters.Length];
    for (int i = 0; i < parameters.Length; i++)
    {
        array[i] = (IntPtr)Parameter.getCPtr(parameters[i]);
    }

    fixed (IntPtr* ptr = array)
    {
        FirebaseAnalyticsPINVOKE.LogEvent__SWIG_5(name, (IntPtr)ptr, parameters.Length);
        if (AppUtilPINVOKE.SWIGPendingException.Pending)
        {
            throw AppUtilPINVOKE.SWIGPendingException.Retrieve();
        }
    }
}

Firebase Product(s)

Analytics

Targeted Platform(s)

Apple Platforms, Android, Desktop

@google-oss-bot
Copy link

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

@argzdev
Copy link

argzdev commented May 3, 2024

Hi @abogarsukov-braingames, thanks for suggesting a feature request! This does seem like an efficient way of handling allocations. That said, I'll go ahead and mark this as a feature request, and bring this up to our engineering sync to see if we can get some feedback. While we are unable to promise any timeline for this, we'll definitely keep this under our radar.

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

No branches or pull requests

3 participants