DrawingBrush Performance - PullRequest
       20

DrawingBrush Performance

1 голос
/ 27 августа 2009

Существуют ли различия в производительности между следующими тремя граничными объектами?

<Border Grid.Column="0" Grid.ColumnSpan="2" Opacity="1">
  <Border.Background>
    <DrawingBrush>
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="Red">
            <GeometryDrawing.Geometry>
              <GeometryGroup>
                <RectangleGeometry Rect="0,0 100,1000" />
                <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
                <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
              </GeometryGroup>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Border.Background>
</Border>

<Border Grid.Column="0" Grid.ColumnSpan="2" Opacity="1">
  <Border.Background>
    <DrawingBrush>
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="Red">
            <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0 100,1000" />
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
          <GeometryDrawing>
            <GeometryDrawing.Geometry>
              <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
          <GeometryDrawing>
            <GeometryDrawing.Geometry>
              <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Pen>
              <Pen Thickness="20" Brush="Black"/>
            </GeometryDrawing.Pen>
          </GeometryDrawing>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Border.Background>
</Border>

<Border Grid.Column="3" Grid.ColumnSpan="2" Opacity="1">
  <Image Stretch="Uniform">
    <Image.Source>
      <DrawingImage>
        <DrawingImage.Drawing>
          <DrawingGroup>
            <GeometryDrawing Brush="Red">
              <GeometryDrawing.Geometry>
                <GeometryGroup>
                  <RectangleGeometry Rect="0,0 100,1000" />
                  <LineGeometry StartPoint="0,0" EndPoint="100,1000"/>
                  <LineGeometry StartPoint="100,0" EndPoint="0,1000"/>
                </GeometryGroup>
              </GeometryDrawing.Geometry>
              <GeometryDrawing.Pen>
                <Pen Thickness="20" Brush="Black"/>
              </GeometryDrawing.Pen>
            </GeometryDrawing>
          </DrawingGroup>
        </DrawingImage.Drawing>
      </DrawingImage>
    </Image.Source>
  </Image>
</Border>

1 Ответ

4 голосов
/ 27 августа 2009

Вот стандартный ответ на такие вопросы, как ваш, который сводится к «Является ли А быстрее, чем Б?» ...

Попробуйте оба (или все три или сколько угодно) и измерьте время выполнения. Аргументы из первых принципов не отвечают на вопрос, хотя они могут генерировать много горячего воздуха.

Пожалуйста, не думайте, что я отбрасываю вас быстрым ответом, где я сейчас работаю, параллельные вычисления для геофизики, производительность очень и очень важна. С трудом выигранный опыт подсказывает мне, что единственный способ убедиться, что A быстрее, чем B, это измерить оба. И если для измерения различий не стоит кодировать оба, то разница не важна!

...