Discord.js endpoint comparison

Benchmark created by Schuyler Cebulskie on


Setup

const PROTOCOL_VERSION = 6;
  const HOST = 'https://discordapp.com';
  const API = `${HOST}/api/v${PROTOCOL_VERSION}`;
  
  const newEndpoints = {
    Guild: guildID => {
      if (guildID.id) guildID = guildID.id;
      const base = `/guilds/${guildID}`;
      return {
        toString: () => base,
        prune: `${base}/prune`,
        embed: `${base}/embed`,
        bans: `${base}/bans`,
        integrations: `${base}/integrations`,
        members: `${base}/members`,
        channels: `${base}/channels`,
        invites: `${base}/invites`,
        roles: `${base}/roles`,
        emojis: `${base}/emojis`,
        search: `${base}/messages/search`,
        voiceRegions: `${base}/regions`,
        webhooks: `${base}/webhooks`,
        ack: `${base}/ack`,
        settings: `${base}/settings`,
        Emoji: emojiID => `${base}/emojis/${emojiID}`,
        Icon: (root, hash) => Endpoints.CDN(root).Icon(guildID, hash),
        Splash: (root, hash) => Endpoints.CDN(root).Splash(guildID, hash),
        Role: roleID => `${base}/roles/${roleID}`,
        Member: memberID => {
          if (memberID.id) memberID = memberID.id;
          const mbase = `${base}/members/${memberID}`;
          return {
            toString: () => mbase,
            Role: roleID => `${mbase}/roles/${roleID}`,
            nickname: `${base}/members/@me/nick`,
          };
        },
      };
    }
  };
  
  const oldEndpoints = {
    guilds: `${API}/guilds`,
    guild: guildID => `${oldEndpoints.guilds}/${guildID}`,
    guildIcon: (guildID, hash) => `${oldEndpoints.CDN}/icons/${guildID}/${hash}.jpg`,
    guildSplash: (guildID, hash) => `${oldEndpoints.CDN}/splashes/${guildID}/${hash}.jpg`,
    guildPrune: guildID => `${oldEndpoints.guild(guildID)}/prune`,
    guildEmbed: guildID => `${oldEndpoints.guild(guildID)}/embed`,
    guildInvites: guildID => `${oldEndpoints.guild(guildID)}/invites`,
    guildRoles: guildID => `${oldEndpoints.guild(guildID)}/roles`,
    guildRole: (guildID, roleID) => `${oldEndpoints.guildRoles(guildID)}/${roleID}`,
    guildBans: guildID => `${oldEndpoints.guild(guildID)}/bans`,
    guildIntegrations: guildID => `${oldEndpoints.guild(guildID)}/integrations`,
    guildMembers: guildID => `${oldEndpoints.guild(guildID)}/members`,
    guildMember: (guildID, memberID) => `${oldEndpoints.guildMembers(guildID)}/${memberID}`,
    guildMemberRole: (guildID, memberID, roleID) => `${oldEndpoints.guildMember(guildID, memberID)}/roles/${roleID}`,
    guildMemberNickname: guildID => `${oldEndpoints.guildMember(guildID, '@me')}/nick`,
    guildChannels: guildID => `${oldEndpoints.guild(guildID)}/channels`,
    guildEmojis: guildID => `${oldEndpoints.guild(guildID)}/emojis`,
    guildEmoji: (guildID, emojiID) => `${oldEndpoints.guildEmojis(guildID)}/${emojiID}`,
    guildSearch: guildID => `${oldEndpoints.guild(guildID)}/messages/search`,
    guildVoiceRegions: guildID => `${oldEndpoints.guild(guildID)}/regions`,
    guildWebhooks: guildID => `${oldEndpoints.guild(guildID)}/webhooks`
  };

Test runner

Ready to run.

Testing in
TestOps/sec
New
newEndpoints.Guild('222078108977594368').Member('81440962496172032');
ready
Old
oldEndpoints.guildMember('222078108977594368', '81440962496172032');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Schuyler Cebulskie on