Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/13 12:30:18 (11 years ago)
Author:
pfleck
Message:

#2030
Switched Text encoding to Mtom encoding for better performance for binary data.
Merged trunk into branch.

Location:
branches/HivePerformance/sources
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/HivePerformance/sources

  • branches/HivePerformance/sources/HeuristicLab.Data/3.3/StringArray.cs

    r7259 r9444  
    3434  [StorableClass]
    3535  public class StringArray : Item, IEnumerable<string>, IStringConvertibleArray {
     36    private const int maximumToStringLength = 100;
     37
    3638    public static new Image StaticItemImage {
    3739      get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
     
    106108
    107109    public override string ToString() {
     110      if (array.Length == 0) return "[]";
     111
    108112      StringBuilder sb = new StringBuilder();
    109113      sb.Append("[");
    110       if (array.Length > 0) {
    111         sb.Append(array[0]);
    112         for (int i = 1; i < array.Length; i++)
    113           sb.Append(";").Append(array[i]);
     114      sb.Append(array[0]);
     115      for (int i = 1; i < array.Length; i++) {
     116        sb.Append(";").Append(array[i]);
     117        if (sb.Length > maximumToStringLength) {
     118          sb.Append("...");
     119          break;
     120        }
    114121      }
    115122      sb.Append("]");
     
    150157      if (ItemChanged != null)
    151158        ItemChanged(this, new EventArgs<int>(index));
    152       OnToStringChanged();
     159      if (index < maximumToStringLength)
     160        OnToStringChanged();
    153161    }
    154162    public event EventHandler Reset;
  • branches/HivePerformance/sources/HeuristicLab.Data/3.3/StringMatrix.cs

    r7259 r9444  
    3434  [StorableClass]
    3535  public class StringMatrix : Item, IEnumerable<string>, IStringConvertibleMatrix {
     36    private const int maximumToStringLength = 100;
     37
    3638    public static new Image StaticItemImage {
    3739      get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
     
    208210
    209211    public override string ToString() {
     212      if (matrix.Length == 0) return "[]";
     213
    210214      StringBuilder sb = new StringBuilder();
    211215      sb.Append("[");
    212       if (matrix.Length > 0) {
    213         for (int i = 0; i < Rows; i++) {
    214           sb.Append("[").Append(matrix[i, 0]);
    215           for (int j = 1; j < Columns; j++)
    216             sb.Append(";").Append(matrix[i, j]);
    217           sb.Append("]");
     216      for (int i = 0; i < Rows; i++) {
     217        sb.Append("[").Append(matrix[i, 0]);
     218        for (int j = 1; j < Columns; j++)
     219          sb.Append(";").Append(matrix[i, j]);
     220        sb.Append("]");
     221
     222        if (sb.Length > maximumToStringLength) {
     223          sb.Append("[...]");
     224          break;
    218225        }
    219226      }
    220227      sb.Append("]");
     228
    221229      return sb.ToString();
    222230    }
     
    286294      if (ItemChanged != null)
    287295        ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex));
    288       OnToStringChanged();
     296
     297      //approximation to avoid firing of unnecessary ToStringChangedEvents
     298      //columnIndex is not used, because always full rows are returned in the ToString method
     299      if (rowIndex * Columns < maximumToStringLength)
     300        OnToStringChanged();
    289301    }
    290302    public event EventHandler Reset;
  • branches/HivePerformance/sources/HeuristicLab.Data/3.3/ValueTypeArray.cs

    r8587 r9444  
    3434  [StorableClass]
    3535  public abstract class ValueTypeArray<T> : Item, IEnumerable<T> where T : struct {
     36    private const int maximumToStringLength = 100;
     37
    3638    public static new Image StaticItemImage {
    3739      get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
     
    99101
    100102    public override string ToString() {
     103      if (array.Length == 0) return "[]";
     104
    101105      StringBuilder sb = new StringBuilder();
    102106      sb.Append("[");
    103       if (array.Length > 0) {
    104         sb.Append(array[0].ToString());
    105         for (int i = 1; i < array.Length; i++)
    106           sb.Append(";").Append(array[i].ToString());
     107      sb.Append(array[0].ToString());
     108      for (int i = 1; i < array.Length; i++) {
     109        sb.Append(";").Append(array[i].ToString());
     110        if (sb.Length > maximumToStringLength) {
     111          sb.Append("...");
     112          break;
     113        }
    107114      }
    108115      sb.Append("]");
     
    122129      if (ItemChanged != null)
    123130        ItemChanged(this, new EventArgs<int>(index));
    124       OnToStringChanged();
     131      if (index < maximumToStringLength)
     132        OnToStringChanged();
    125133    }
    126134    public event EventHandler Reset;
  • branches/HivePerformance/sources/HeuristicLab.Data/3.3/ValueTypeMatrix.cs

    r7259 r9444  
    3434  [StorableClass]
    3535  public abstract class ValueTypeMatrix<T> : Item, IEnumerable<T> where T : struct {
     36    private const int maximumToStringLength = 100;
     37
    3638    public static new Image StaticItemImage {
    3739      get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; }
     
    194196
    195197    public override string ToString() {
     198      if (matrix.Length == 0) return "[]";
     199
    196200      StringBuilder sb = new StringBuilder();
    197201      sb.Append("[");
    198       if (matrix.Length > 0) {
    199         for (int i = 0; i < Rows; i++) {
    200           sb.Append("[").Append(matrix[i, 0].ToString());
    201           for (int j = 1; j < Columns; j++)
    202             sb.Append(";").Append(matrix[i, j].ToString());
    203           sb.Append("]");
     202      for (int i = 0; i < Rows; i++) {
     203        sb.Append("[").Append(matrix[i, 0].ToString());
     204        for (int j = 1; j < Columns; j++)
     205          sb.Append(";").Append(matrix[i, j].ToString());
     206        sb.Append("]");
     207
     208        if (sb.Length > maximumToStringLength) {
     209          sb.Append("[...]");
     210          break;
    204211        }
    205212      }
    206213      sb.Append("]");
     214
    207215      return sb.ToString();
    208216    }
     
    251259      if (ItemChanged != null)
    252260        ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex));
    253       OnToStringChanged();
     261
     262      //approximation to avoid firing of unnecessary ToStringChangedEvents
     263      //columnIndex is not used, because always full rows are returned in the ToString method
     264      if (rowIndex * Columns < maximumToStringLength)
     265        OnToStringChanged();
    254266    }
    255267    public event EventHandler Reset;
Note: See TracChangeset for help on using the changeset viewer.