Skip to content

ApiManagement bad performance in IDE #9532

@timotheeguerin

Description

@timotheeguerin

New service which is quite big but has not great performance in IDE. Autocomplete takes seconds to show up for example

specification/apimanagement/resource-manager/Microsoft.ApiManagement/ApiManagement/

Image

--stats result

TypeSpec compiler v1.9.0-dev.3

✔ Compiling
✔ @azure-tools/typespec-autorest 1406ms /

Compilation completed successfully.

Compiler statistics:
  Complexity:
    Created types: 62367
    Finished types: 56124
  Performance:
    loader: 640ms
    resolver: 201ms
    checker: 751ms
    validation: 197ms
      @azure-tools/typespec-azure-core: 0ms
      @azure-tools/typespec-client-generator-core: 4ms
      @typespec/http: 74ms
      @typespec/rest: 13ms
      @typespec/versioning: 93ms
      compiler: 14ms
    linter: 1108ms
      @azure-tools/typespec-azure-core/auth-required: 0ms
      @azure-tools/typespec-azure-core/byos: 59ms
      @azure-tools/typespec-azure-core/casing-style: 5ms
      @azure-tools/typespec-azure-core/composition-over-inheritance: 0ms
      @azure-tools/typespec-azure-core/documentation-required: 7ms
      @azure-tools/typespec-azure-core/friendly-name: 5ms
      @azure-tools/typespec-azure-core/key-visibility-required: 1ms
      @azure-tools/typespec-azure-core/known-encoding: 2ms
      @azure-tools/typespec-azure-core/long-running-polling-operation-required: 3ms
      @azure-tools/typespec-azure-core/no-case-mismatch: 2ms
      @azure-tools/typespec-azure-core/no-closed-literal-union: 2ms
      @azure-tools/typespec-azure-core/no-enum: 0ms
      @azure-tools/typespec-azure-core/no-error-status-codes: 1ms
      @azure-tools/typespec-azure-core/no-explicit-routes-resource-ops: 1ms
      @azure-tools/typespec-azure-core/no-format: 4ms
      @azure-tools/typespec-azure-core/no-generic-numeric: 1ms
      @azure-tools/typespec-azure-core/no-header-explode: 94ms
      @azure-tools/typespec-azure-core/no-legacy-usage: 15ms
      @azure-tools/typespec-azure-core/no-multiple-discriminator: 0ms
      @azure-tools/typespec-azure-core/no-nullable: 1ms
      @azure-tools/typespec-azure-core/no-offsetdatetime: 9ms
      @azure-tools/typespec-azure-core/no-openapi: 20ms
      @azure-tools/typespec-azure-core/no-private-usage: 20ms
      @azure-tools/typespec-azure-core/no-query-explode: 99ms
      @azure-tools/typespec-azure-core/no-rest-library-interfaces: 124ms
      @azure-tools/typespec-azure-core/no-rpc-path-params: 1ms
      @azure-tools/typespec-azure-core/no-string-discriminator: 0ms
      @azure-tools/typespec-azure-core/no-unknown: 1ms
      @azure-tools/typespec-azure-core/no-unnamed-union: 3ms
      @azure-tools/typespec-azure-core/operation-missing-api-version: 2ms
      @azure-tools/typespec-azure-core/request-body-problem: 4ms
      @azure-tools/typespec-azure-core/require-versioned: 0ms
      @azure-tools/typespec-azure-core/response-schema-problem: 110ms
      @azure-tools/typespec-azure-core/rpc-operation-request-body: 0ms
      @azure-tools/typespec-azure-core/spread-discriminated-model: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-common-types-version: 63ms
      @azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes: 49ms
      @azure-tools/typespec-azure-resource-manager/arm-no-record: 2ms
      @azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes: 6ms
      @azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment: 2ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern: 0ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-operation: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-operation-response: 45ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-patch: 2ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars: 1ms
      @azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state: 1ms
      @azure-tools/typespec-azure-resource-manager/beyond-nesting-levels: 0ms
      @azure-tools/typespec-azure-resource-manager/empty-updateable-properties: 1ms
      @azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation: 0ms
      @azure-tools/typespec-azure-resource-manager/lro-location-header: 93ms
      @azure-tools/typespec-azure-resource-manager/missing-operations-endpoint: 0ms
      @azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers: 2ms
      @azure-tools/typespec-azure-resource-manager/no-empty-model: 0ms
      @azure-tools/typespec-azure-resource-manager/no-resource-delete-operation: 2ms
      @azure-tools/typespec-azure-resource-manager/no-response-body: 144ms
      @azure-tools/typespec-azure-resource-manager/patch-envelope: 1ms
      @azure-tools/typespec-azure-resource-manager/resource-name: 1ms
      @azure-tools/typespec-azure-resource-manager/secret-prop: 14ms
      @azure-tools/typespec-azure-resource-manager/unsupported-type: 2ms
      @azure-tools/typespec-client-generator-core/property-name-conflict: 9ms
      @azure-tools/typespec-client-generator-core/require-client-suffix: 12ms
    emit: 1406ms
      @azure-tools/typespec-autorest: 1406ms

There is also probably some optiomization so it doesn't take that long to compile. Some linting rule seems like they should be able to be sped up

This I think is a good spec to use as a benchmark for improving performance in the LSP and compiler

Metadata

Metadata

Assignees

No one assigned

    Labels

    compiler:coreIssues for @typespec/compilerideIssues for VS, VSCode, Monaco, etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions