microsoft / microsoft/typespec

ApiManagement bad performance in IDE

Open
#9,532 0 comments 0 reactions 0 assignees View on GitHub
compiler:core ide
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.